Ссылка href для всего div в HTML/CSS
Вот что я пытаюсь выполнить в HTML/CSS:
У меня есть изображения разных высот и ширины, но они все под 180x235. Поэтому я хочу создать div
с border
и vertical-align: middle
все. Я успешно это сделал, но теперь я застрял в том, как правильно привязать href к ссылке div
.
Вот мой код:
<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>
Обратите внимание, что для удобства копирования в этом случае код стиля встроен.
Я где-то читал, что могу просто добавить еще один родительский div поверх кода, а затем сделать href внутри этого. Однако, основываясь на некоторых исследованиях, это будет недействительный код.
Итак, чтобы подвести итог, мне нужно, чтобы весь div (#parentdivimage
) был ссылкой href.
Ответы
Ответ 1
ОБНОВЛЕНИЕ 06/10/2014: использование div внутри a семантически корректно в HTML5.
Вам нужно выбрать один из следующих сценариев:
<a href="http://google.com">
<div>
Hello world
</div>
</a>
который семантически некорректен, но он будет работать.
<div style="cursor: pointer;" onclick="window.location='http://google.com';">
Hello world
</div>
который семантически корректен, но включает в себя использование JS.
<a href="http://google.com">
<span style="display: block;">
Hello world
</span>
</a>
который семантически корректен и работает как ожидалось, но больше не является div.
Ответ 2
Почему бы вам не удалить элемент <div>
и заменить его на <a>
? Просто потому, что тег привязки не является div, это не значит, что вы не можете стилить его с помощью display:block
, высоты, ширины, фона, границы и т.д. Вы можете сделать его похожим на div, но все равно действовать как ссылка, Тогда вы не полагаетесь на неверный код или JavaScript, которые могут быть недоступны для некоторых пользователей.
Ответ 3
Сделайте это так:
Parentdivimage должен иметь указанную ширину и высоту, а его позиция должна быть:
position: relative;
Внутри родительского изображения рядом с другими div, содержащими родительский элемент, вы должны поставить:
<a href="linkt.to.smthn.com"><span class="clickable"></span></a>
Затем в файле css:
.clickable {
height: 100%;
width: 100%;
left: 0;
top: 0;
position: absolute;
z-index: 1;
}
Тег span заполнит свой родительский блок, который является parentdiv, из-за высоты и ширины, установленных на 100%. Span будет на вершине всех окружающих элементов из-за установки z-индекса выше, чем другие элементы. Наконец, диапазон будет кликабельным, потому что он внутри тега 'a'.
Ответ 4
Две вещи, которые вы можете сделать:
-
Измените #childdivimage
на элемент span
и измените #parentdivimage
на тег привязки. Это может потребовать от вас добавить еще несколько стилей, чтобы они выглядели идеально. Это предпочтительнее, поскольку использует семантическую разметку и не полагается на javascript.
- Используйте Javascript для привязки события click к
#parentdivimage
. Вы должны перенаправить окно браузера, изменив window.location
внутри этого события. Это TheEasyWay TM но не будет деградировать изящно.
Ответ 5
Отправляясь от того, что сказал Surreal Dreams, лучше всего использовать стиль привязки в моем опыте, но это действительно зависит от того, что вы делаете. Вот пример:
Html:
<div class="parent-div">
<a href="#">Test</a>
<a href="#">Test</a>
<a href="#">Test</a>
</div>
Затем CSS:
.parent-div {
width: 200px;
}
a {
display:block;
background-color: #ccc;
color: #000;
text-decoration:none;
padding:10px;
margin-bottom:1px;
}
a:hover {
background-color: #ddd;
}
http://jsbin.com/zijijuduqo/1/edit?html,css,output
Ответ 6
Сделайте div
из id="childdivimag"
a span
и оберните это в элемент a
. Поскольку значения span
и img
являются встроенными элементами по умолчанию, это остается в силе, тогда как div
является элементом уровня блока и, следовательно, недействительной разметкой, когда содержится в a
.
Ответ 7
поместите display:block
в элемент привязки. и/или zoom:1
;
но вы просто должны это сделать.
a#parentdivimage{position:relative; width:184px; height:235px;
border:2px solid #000; text-align:center;
background-image:url("myimage.jpg");
background-position: 50% 50%;
background-repeat:no-repeat; display:block;
text-indent:-9999px}
<a id="parentdivimage">whatever your alt attribute was</a>
Ответ 8
Что бы я сделал, это поместить прогиб в тег <a>
, установить диапазон для блокировки и добавить размер к диапазону или просто применить стиль к тегу <a>
. Определенно обрабатывайте позиционирование в стиле тегов <a>
. Добавьте onclick event
в a where
JavaScript поймает событие, а затем вернет false в конце события JavaScript, чтобы предотвратить действие по умолчанию href
и пузырение щелчка. Это работает в случаях с включенным JavaScript или без него, и любой AJAX может обрабатываться в слушателе Javascript.
Если вы используете jQuery, вы можете использовать это как ваш слушатель и опустить onclick
в теге a
.
$('#idofdiv').live("click", function(e) {
//add stuff here
e.preventDefault; //or use return false
});
это позволяет при необходимости подключать слушателей к любым измененным элементам.
Ответ 9
Привет, это можно сделать разными способами. а. Использование вложенных внутри тега.
<a href="link1.html">
<div> Something in the div </div>
</a>
б. Использование встроенного метода JavaScript
<div onclick="javascript:window.location.href='link1.html' ">
Some Text
</div>
с. Использование jQuery внутри тега
HTML:
<div class="demo" > Some text here </div>
JQuery:
$(".demo").click( function() {
window.location.href="link1.html";
});
Надеюсь, это поможет... Заранее спасибо
Ответ 10
Ссылка с тегами <div>
:
<div style="cursor: pointer;" onclick="window.location='http://www.google.com';">
Something in the div
</div>
Ссылка с тегами <a>
:
<a href="#" onclick="location.href='http://www.google.com'; return false;">
<div>
Something in the div
</div>
</a>