gpt4 book ai didi

javascript - 如何防止最右边的元素在悬停时跳跃?

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:21 25 4
gpt4 key购买 nike

除了将鼠标悬停在最右侧的图像上(必须单击“显示图像”才能查看图像)外,我对此感到满意。整行略微向左跳跃。我注意到这不会发生在最后一行。感谢任何指点。

这是一个演示问题的代码笔:https://codepen.io/anon/pen/OmeNRa?editors=0110

var showImages = $("#showImages");
var hideImages = $("#hideImages");
var images = $("#images");
var overlay = $("#overlay");
var docHeight = $(document).height();
var writtenContent = $("#writtenContent");
var counter = 0;
var messageBox = $("#messageBox");
var sendMessage = $("#sendMessage");

showImages.click(function() {
counter++;
$(this).html("Show Images");
if (counter % 2 > 0) $(this).html("Hide Images");
$("body").toggleClass("blackout", 300);
images.slideToggle({
direction: "up"
}, 600);
writtenContent.slideToggle({
direction: "up"
}, 600);
});

sendMessage.click(function() {
messageBox.slideToggle({
direction: "up"
}, 500);
});

$(document).on("mouseenter", "span img", function() {
$(this).addClass("fade").siblings().show();
});
$(document).on("mouseleave", "span img", function() {
$(this).removeClass("fade").siblings().hide();
});
.nav {
height: 8vh;
background: linear-gradient(-45deg, purple, purple, indigo);
color: white;
font-family: helvetica;
font-size: 20px;
position: fixed;
left: 0;
width: 100%;
z-index: 999;
}

#topNav {
top: 0vh;
}

#bottomNav {
bottom: -8.1vh;
transform: translateY(-100%);
}

#content {
padding-top: 8vh;
padding-bottom: 8vh;
margin: 0 auto;
}

#images {
display: none;
z-index: 100;
bottom: 0;
text-align: center;
}

#images span {
position: relative;
text-align: center;
}

#images span img {
height: 100px;
width: 100px;
}

.blackout {
background-color: black;
-webkit-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
}

.name {
display: none;
color: white;
left: 0;
position: absolute;
bottom: 200%;
width: 100%;
font-weight: bold;
pointer-events: none;
}

.fade {
opacity: .2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="nav" id="topNav">
</div>
<div id="content">
<div id="writtenContent">
<p>This page's written content starts here..</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>END of page's written content.</p>
</div>

<div id="images">
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image LONG LONG LONG Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image LONG LONG Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image LONG Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
</div>

</div>

<div class="nav" id="bottomNav">
<button id="showImages">Show Images</button>
</div>

最佳答案

问题在于您的 .images>spandisplay:inline (默认)。此外,您的居中技术基于内联跨度的高度,它取决于行高并且很容易中断,更不用说正确的居中(例如,如果您更改图像的高度)。

要解决您的问题,我会这样做:

#images span {
display: inline-block;
}
.name {
bottom: 50%;
text-align: center;
transform: translateY(50%)
}

您更新的代码段:

var showImages = $("#showImages");
var hideImages = $("#hideImages");
var images = $("#images");
var overlay = $("#overlay");
var docHeight = $(document).height();
var writtenContent = $("#writtenContent");
var counter = 0;
var messageBox = $("#messageBox");
var sendMessage = $("#sendMessage");

showImages.click(function() {
counter++;
$(this).html("Show Images");
if (counter % 2 > 0) $(this).html("Hide Images");
$("body").toggleClass("blackout", 300);
images.slideToggle({
direction: "up"
}, 600);
writtenContent.slideToggle({
direction: "up"
}, 600);
});

sendMessage.click(function() {
messageBox.slideToggle({
direction: "up"
}, 500);
});

$(document).on("mouseenter", "span img", function() {
$(this).addClass("fade").siblings().show();
});
$(document).on("mouseleave", "span img", function() {
$(this).removeClass("fade").siblings().hide();
});
.nav {
height: 8vh;
background: linear-gradient(-45deg, purple, purple, indigo);
color: white;
font-family: helvetica;
font-size: 20px;
position: fixed;
left: 0;
width: 100%;
z-index: 999;
}

#topNav {
top: 0vh;
}

#bottomNav {
bottom: -8.1vh;
transform: translateY(-100%);
}

#content {
padding-top: 8vh;
padding-bottom: 8vh;
margin: 0 auto;
}

#images {
display: none;
z-index: 100;
bottom: 0;
text-align: center;
}

#images span {
position: relative;
text-align: center;
display: inline-block;
}

#images span img {
height: 100px;
width: 100px;
}

.blackout {
background-color: black;
-webkit-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
-ms-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
}

.name {
display: none;
color: white;
left: 0;
position: absolute;
bottom: 50%;
width: 100%;
font-weight: bold;
pointer-events: none;
text-align: center;
transform: translateY(50%)
}

.fade {
opacity: .2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="nav" id="topNav">
</div>
<div id="content">
<div id="writtenContent">
<p>This page's written content starts here..</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>Page written content goes here.</p>
<p>END of page's written content.</p>
</div>

<div id="images">
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image LONG LONG LONG Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image LONG LONG Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image LONG Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
<span>
<img src="https://pp.walk.sc/map_tiles/walkscore/v3/17/4512/6478/14.png">
<div class='name'>Image Title</div>
</span>
</div>

</div>

<div class="nav" id="bottomNav">
<button id="showImages">Show Images</button>
</div>

另请注意 <div>里面的<span>元素在技术上是非法的。然而,这个错误流传如此之广,以致将来这条规则很可能会被改变。但是,就目前而言,如果您希望您的页面通过验证,则需要更改您的标记。

关于javascript - 如何防止最右边的元素在悬停时跳跃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44272271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com