Voici ce que j'essaye d'accomplir en HTML / CSS:
J'ai des images de différentes hauteurs et largeurs, mais elles sont toutes inférieures à 180x235. Donc ce que je veux faire, c'est créer un div
avec border
et vertical-align: middle
tout le monde. J'ai réussi à faire cela, mais maintenant je suis coincé sur la façon de correctement un lien href l'ensemble div
.
Voici mon code:
<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>
Veuillez noter que par souci de copier-coller ici facilement, le code de style est en ligne.
J'ai lu quelque part que je peux simplement ajouter un autre div parent au-dessus du code, puis faire un href à l'intérieur. Cependant, sur la base de certaines recherches, ce ne sera pas un code valide.
Donc, pour résumer à nouveau, j'ai besoin que le div ( #parentdivimage
) entier soit un lien href.
<a>
balise est en ligne et une<div>
balise est un bloc. Il n'est pas valide de mettre une balise de niveau bloc dans une balise en ligne, c'est donc la source de l'erreur.span
au lieu de adiv
et utiliser les cssdisplay: block;
pour lui donner l'apparence souhaitée et sémantique.display:block
sur l'<a>
étiquette. Il deviendra un élément de bloc sans imbrication.Pourquoi ne pas enlever l'
<div>
élément et le remplacer par un à la<a>
place? Ce n'est pas parce que la balise d'ancrage n'est pas une div que vous ne pouvez pas la styliser avecdisplay:block
une hauteur, une largeur, un arrière-plan, une bordure, etc. Vous pouvez la faire ressembler à une div mais agir comme un lien. Ensuite, vous ne comptez pas sur du code invalide ou du JavaScript qui peut ne pas être activé pour certains utilisateurs.la source
<a>
à l'intérieur du<div>
.Fais-le comme ça:
Parentdivimage doit avoir une largeur et une hauteur spécifiées, et sa position doit être:
Juste à l'intérieur de l'image parentdiv, à côté des autres divs que le parent contient, vous devez mettre:
Puis dans le fichier css:
La balise span remplira son bloc parent qui est parentdiv, en raison de la hauteur et de la largeur définies sur 100%. Span sera au-dessus de tous les éléments environnants en raison du réglage de z-index plus élevé que les autres éléments. Enfin, span sera cliquable, car il se trouve à l'intérieur d'une balise «a».
la source
Deux choses que vous pouvez faire:
Passez
#childdivimage
à unspan
élément et changez#parentdivimage
en une balise d'ancrage. Cela peut vous obliger à ajouter un peu plus de style pour que les choses soient parfaites. Ceci est préféré, car il utilise un balisage sémantique et ne repose pas sur javascript.#parentdivimage
. Vous devez rediriger la fenêtre du navigateur en modifiant à l'window.location
intérieur de cet événement. Ceci est TheEasyWay TM , mais ne se dégradera pas gracieusement.la source
En partant de ce que Surreal Dreams a dit, il est probablement préférable de styliser l'étiquette d'ancrage dans mon expérience, mais cela dépend vraiment de ce que vous faites. Voici un exemple:
Html:
Puis le CSS:
http://jsbin.com/zijijuduqo/1/edit?html,css,output
la source
Faites plutôt le
div
d'id="childdivimag"
unspan
et enveloppez-le dans una
élément. Comme les élémentsspan
etimg
sont en ligne par défaut, cela reste valide, alors que adiv
est un élément de niveau bloc, et donc une balise invalide lorsqu'elle est contenue dans una
.la source
mettre
display:block
l'élément d'ancrage. et / ouzoom:1
;mais tu devrais vraiment faire ça.
la source
Ce que je ferais, c'est mettre une étendue à l'intérieur de la
<a>
balise, définir la portée sur bloquer et ajouter de la taille à la portée, ou simplement appliquer le style à la<a>
balise. Gérez définitivement le positionnement dans le<a>
style de balise. Ajouter unonclick event
aua where
JavaScript capturera l'événement, puis retournera false à la fin de l'événement JavaScript pour empêcher l'action par défauthref
et le bouillonnement du clic. Cela fonctionne dans les cas avec ou sans JavaScript activé, et tout AJAX peut être géré dans l'écouteur Javascript.Si vous utilisez jQuery, vous pouvez l'utiliser comme écouteur et omettre le
onclick
dans laa
balise.cela vous permet d'attacher des écouteurs à tout élément modifié si nécessaire.
la source
Un lien avec des
<div>
balises:Un lien avec des
<a>
balises:la source
Cela peut être fait de plusieurs manières. une. Utilisation imbriquée dans une balise.
b. Utilisation de la méthode JavaScript en ligne
c. Utilisation de jQuery à l'intérieur de la balise
HTML:
jQuery:
la source