有时,在写页面的时候,会需要将<li>这个块状元素横排显示,此时就需要将display属性设置为inline-block,此时问题出现了,在两个<li>元素之间会出现大约8px左右的空白间隙
引起这种空白间隔的原因:
浏览器的默认行为是把inline元素间的空白字符(空格换行tab)渲染成一个空格,也就是我们上面的代码<li>换行后会产生换行字符,而它会变成一个空格,当然空格就占用一个字符的宽度。
解决方案:
方法一:既然是因为<li>换行导致的,那就可以将<li>代码全部写在一排,如下
<ul>
<li class="part1"></li><li class="part2"></li><li class="part3"></li><li class="part4"></li>
</ul>
再刷新页面看就没有空白了,就是这么神奇~
方法二:将<ul>内的字符尺寸直接设为0,将下面样式放入样式表,问题解决。
.wrap ul{font-size:0px;}
但随着而来的就是<ul>中的其他文字就不见了,因为其尺寸被设为0px了,我们只好将他们重新设定字符尺寸。
方法三:li父级标签字符设置为0在Safari浏览器依然出现间隔空白;用下列方法
ul{letter-spacing: -5px;}
ul li{letter-spacing: normal;}
实例:图片间隙问题,非ul,li情况
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
body{
background-color: rgb(54, 58, 61);
}
.div {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
width: 980px;
height: 330px;
overflow: hidden;
white-space: nowrap;
}
.div div:nth-child(2) {
color: rgb(255, 255, 255);
position: absolute;
top: 50%;
left: 0;
font-size: 30px;
background-color: rgb(169, 161, 161);
}
.div div:nth-child(3) {
color: rgb(255, 255, 255);
position: absolute;
top: 50%;
right: 0;
transform: translateY(-50%);
font-size: 30px;
background-color: rgb(184, 174, 174);
}
.hezi {
transition: all .3s ease;
font-size: 0;
}
.hezi img{
transform: translateX(0);
}
</style>
</head>
<body>
<div class="div">
<div class="hezi">
<img src="./images/1.jpg">
<img src="./images/2.jpg">
<img src="./images/7.jpg">
<img src="./images/4.jpg">
<img src="./images/5.jpg">
<img src="./images/6.jpg">
</div>
<div><</div>
<div>></div>
</div>
<script>
let tupian=document.getElementsByClassName('hezi');
let zuo=document.querySelector('.div>div:nth-child(2)');
let you=document.querySelector('.div>div:nth-child(3)');
let x=0;
zuo.onclick=function(){
if(x==-5*980){
x=0;
tupian[0].style.transform=`translateX(${x}px)`;
}
else{
x-=980;
tupian[0].style.transform=`translateX(${x}px)`;}
}
you.onclick=function(){
if(x==0){
x=-5*980
tupian[0].style.transform=`translateX(${x}px)`;
}
else{
x+=980;
tupian[0].style.transform=`translateX(${x}px)`;
}
}
</script>
</body>
</html>
解决间隙用上上面三种方法都可以,我用的第二种解决问题。