li与li之间有看不见的空白间隔是什么原因引起的?有什么解决办法?以及类似的实际问题解决。

文章讲述了在CSS布局中,将li元素设置为inline-block时可能出现的8px左右空白间隙问题,分析了原因(换行字符被渲染为空格),并提供了三种解决方案:代码不换行、设置字体尺寸为0以及调整字母间距。同时,文章还提到了对于非li元素如图片间隙问题的处理示例。
摘要由CSDN通过智能技术生成

有时,在写页面的时候,会需要将<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>

解决间隙用上上面三种方法都可以,我用的第二种解决问题。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值