#javascript #jquery #css #asp.net
#javascript #jquery #css #asp.net
Вопрос:
У меня появляется #hidden
div, когда вы наводите #HoverMe div
курсор, снимаете его, и он снова скрывается. У #hidden
них есть свой подраздел div, который действует как выпадающий список. #hidden
использует position: absolute;
.Как мне заставить #hidden
div отображаться рядом с #HowerMe
, и пусть его под-div (внутри #hidden
div) отображается под?
как это выглядит сейчас:
------------
| #HoverMe |
------------
---------
| #hidden |
| --------|
| car.name|
|---------|
| car.name|
---------
Как я хочу
------------ ---------
| #HoverMe | | #hidden |
------------ | --------|
| car.name|
|---------|
| car.name|
---------
Мой код:
Я использую свой #HoverMe
-div для отображения #hidden
-div, в которых есть список содержимого, которое я хочу показать.
<div style="position: relative">
<div id="HoverMe" >
This owner own @Html.DisplayFor(model => model.TotCar) cars in total
</div>
<div id="hidden" style="position: absolute; background-color: black"> //<------- hidden
@foreach (var car in Model.Car) {
<div>@car.Name</div>
}
</div>
</div>
Комментарии:
1. Вы пробовали
position: relative; float: left;
?2. @LouysPatriceBessette в первом div? Да, у меня есть, тогда #hoverMe тоже перемещается
3. Нет, я говорил о
#hidden
div… Смотрите ответ @Toaditoad… Он все понял правильно. 😉4. @Nyprez, не могли бы вы пояснить, почему вы предпочитаете (и отмечаете как ответ) решение с использованием JavaScript и некоторого абсолютного позиционирования по сравнению с чистым CSS?
Ответ №1:
Если позиция всплывающего окна должна быть абсолютной, вы можете добавить eventlisteners в javascript для позиционирования элемента. Что-то вроде:
<div>
<div id="HoverMe" style="width: 100px; background: green">
Car
</div>
<div id="hidden" style="position: absolute; background-color: lightgray; display: none">
<div>Car Info 1</div>
<div>Car Info 2</div>
<div>Car Info 3</div>
</div>
</div>
<script>
var hoverEle = document.getElementById("HoverMe");
var popupEle = document.getElementById("hidden");
hoverEle.addEventListener('mouseover', function () {
var hoverRect = hoverEle.getBoundingClientRect(); // get the position of the hover element
popupEle.style.left = (hoverRect.right 16) "px";
popupEle.style.top = hoverRect.top "px";
popupEle.style.display = "block";
}, false);
hoverEle.addEventListener('mouseout', function () {
popupEle.style.display = "none";
}, false);
</script>
Ответ №2:
Что вы думаете об этом: https://jsfiddle.net/Lnw832L3 /
HTML:
<div id="hoverBox">
<p>
Hover me!
</p>
<div id="hiddenBox">
This is hidden.
<div id="insideHiddenBox">
This is another container inside the hidden box.
</div>
</div>
</div>
CSS:
#hoverBox p {
background: red;
width: 100px;
float: left;
margin: 0;
}
#hoverBox:hover #hiddenBox {
display: block !important;
}
#hiddenBox {
background: yellow;
width: 100px;
float: left;
display: none;
}
#insideHiddenBox {
background: orange;
width: 100px;
}