Aqui está o que estou tentando realizar em HTML / CSS:
Tenho imagens em diferentes alturas e larguras, mas todas elas têm menos de 180x235. Então, o que eu quero fazer é criar um div
com border
e vertical-align: middle
todos eles. Eu fiz isso com sucesso, mas agora estou preso em como vincular corretamente um href ao todo div
.
Aqui está o meu código:
<div id="parentdivimage" style="position:relative;width:184px;height:235px;border-width:2px;border-color:black;border-style:solid;text-align:center;">
<div id="childdivimage" style="position:absolute;top:50%;height:62px;margin-top:-31px;">
<img src="myimage.jpg" height="62" width="180">
</div>
</div>
Observe que, para copiar e colar aqui facilmente, o código de estilo está embutido.
Eu li em algum lugar que eu posso simplesmente adicionar outra div pai sobre o código e depois fazer um href dentro disso. No entanto, com base em algumas pesquisas, não será um código válido.
Então, para resumir novamente, preciso que todo o div ( #parentdivimage
) seja um link href.
<a>
tag está embutida e uma<div>
tag é um bloco. Não é válido colocar uma tag de nível de bloco dentro de uma tag embutida; portanto, essa é a fonte do erro.span
vez de umdiv
e usar cssdisplay: block;
para fazer com que pareça desejado e semântico.display:block
a<a>
marca. Ele se tornará um elemento de bloco sem aninhamento.Por que você não retira o
<div>
elemento e o substitui por um<a>
? Só porque a tag âncora não é uma div, não significa que você não pode estilizá-ladisplay:block
, como altura, largura, plano de fundo, borda etc. Você pode fazer com que pareça uma div, mas ainda age como um link. Então você não depende de código ou JavaScript inválido que pode não estar ativado para alguns usuários.fonte
<a>
dentro do<div>
.Faça isso deste modo:
A imagem dos pais deve ter largura e altura especificadas e sua posição deve ser:
Dentro da imagem pai, ao lado de outras divs que o pai contém, você deve colocar:
Em seguida, no arquivo css:
A tag span preencherá seu bloco pai, que é parentdiv, devido à altura e largura definidas como 100%. A extensão estará no topo de todos os elementos circundantes devido à configuração do índice z mais alto do que outros elementos. Finalmente, o span será clicável, porque está dentro de uma tag 'a'.
fonte
Duas coisas que você pode fazer:
Mude
#childdivimage
para umspan
elemento e mude#parentdivimage
para uma marca de âncora. Isso pode exigir que você adicione um pouco mais de estilo para deixar as coisas perfeitas. Isso é preferido, pois usa marcação semântica e não depende de javascript.#parentdivimage
. Você deve redirecionar a janela do navegador modificandowindow.location
dentro deste evento. Este é o TheEasyWay TM , mas não será degradado normalmente.fonte
Seguindo o que a Surreal Dreams disse, provavelmente é melhor estilizar a marca âncora na minha experiência, mas isso realmente depende do que você está fazendo. Aqui está um exemplo:
Html:
Então o CSS:
http://jsbin.com/zijijuduqo/1/edit?html,css,output
fonte
Faça o
div
deid="childdivimag"
umaspan
vez, e dispor que em uma
elemento. Como os elementosspan
eimg
são in-line por padrão, isso permanece válido, enquanto adiv
é um elemento no nível do bloco e, portanto, uma marcação inválida quando contida em uma
.fonte
coloque
display:block
o elemento de ancoragem. e / ouzoom:1
;mas você realmente deveria fazer isso.
fonte
O que eu faria é colocar uma extensão dentro da
<a>
tag, definir a extensão para bloquear e adicionar tamanho à extensão, ou simplesmente aplicar o estilo à<a>
tag. Definitivamente, manipule o posicionamento no<a>
estilo da tag. Adicionar umonclick event
aoa where
JavaScript capturará o evento e, em seguida, retornará false no final do evento do JavaScript para impedir a ação padrãohref
e a intermitência do clique. Isso funciona em casos com ou sem o JavaScript ativado, e qualquer AJAX pode ser tratado no ouvinte Javascript.Se você estiver usando jQuery, poderá usá-lo como seu ouvinte e omitir o
onclick
naa
tag.isso permite anexar ouvintes a qualquer elemento alterado, conforme necessário.
fonte
Um link com
<div>
tags:Um link com
<a>
tags:fonte
Isso pode ser feito de várias maneiras. uma. Usando aninhado dentro de uma tag.
b. Usando o método JavaScript embutido
c. Usando a tag jQuery inside
HTML:
jQuery:
fonte