css中常见的bug和hack

本文详细介绍了CSS中的一些常见问题及其解决方法,包括图片3px问题、行内块元素间间隔、图片在低版本浏览器的边框问题、PNG24格式透明问题、表单元素垂直对齐、margin粘连和塌陷问题,以及鼠标手型设置。通过CSS Hack技巧,为每个问题提供了有效的解决方案。
摘要由CSDN通过智能技术生成

1、css hack原理:

针对不同的浏览器编写不同的样式代码

2、css中常见的bug和hack

2-1、图片3px问题

在这里插入图片描述

对应的hack:

<!-- 问题:一个盒子没有设置高度,图片放里面,盒子会比图片高出3px及以上。 -->
    <div><img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fedpic_360_360%2Fbe%2F38%2Fbf%2Fbe38bf0082e844d1e99a108ac3a07ee4.jpeg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1648017798&t=05ee3ebc734759c714af5a7ba7e1d7e4
"alt="">
    </div>
  div{
        width: 350px;
        /* 加边框是为了方便看到效果 */
        border: 1px solid #000;
    }

    img{
        /* 解决办法一:给图片加 vertical-align: top;就可以了 */
        vertical-align: top;
        /* 解决办法二:给图片设置display:block; */
    }

在这里插入图片描述

2-2、行内块元素水平方向之间有间隔

在这里插入图片描述

对应的hack:

  <!-- 问题:行内块元素水平方向之间有间隔 -->
    
    <!-- /* 解决办法二:去掉元素代码之间的间隔和换行 */ -->
    <input type="text"><button>提交</button>
/* 解决办法一:加浮动(但是需要清理浮动) */
        /* input {
            float: left;
        }
        button {
            float: left;
        } */

在这里插入图片描述

2-3、图片被a标签包裹,在低版本浏览器中会有边框

在这里插入图片描述
这里是IE7中

对应的hack:

  <!-- 问题:图片被a包裹,在低版本浏览器中会有边框 -->
   <a href="#"><img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fedpic_360_360%2Fcb%2Fcd%2Fca%2Fcbcdca8b8ff6c93491b559915bf47942.jpg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1648017798&t=3887cabab0256bed3623f2f202662492" alt=""></a>
/* 解决办法:给图片去掉边框border: 0px solid #000; 然后在ie里面查看效果,鼠标右键-查看源-选择版本8以下*/
    img{
        border: 0px solid #000;
    }

在这里插入图片描述

2-4、png24格式的图片,在低版本浏览器中显示不透明

对应的hack:

  • 保存成png8格式(png是带透明格式的图)
  • 保存成gif格式
    拓展:jpeg(jpg)图片格式,可以提升或者降低图片压缩级别,减少内存,会自动填充透明为白色

2-5、表单元素垂直方向不能对齐(细微差别!)

在这里插入图片描述

对应的hack:

<!-- 问题:表单元素垂直方向上不能对齐 -->
    <input type="text">
    <button>提交</button>
    /* 解决办法一:给元素添加浮动(但是要清除浮动) */
    /* input{
        float:left;
    }
    button{
        float:left;
    } */

    /* 解决办法二:给input设置vertical-align:*/
    input{
        vertical-align:top;
    }

在这里插入图片描述

2-6、margin的粘连问题(面试题)

在这里插入图片描述

对应的hack:

  <!-- 问题:margin的粘连问题(父随子动),就是一个大盒子(绿色)和小一个盒子(橘色),都分别的设置了宽高,
        但给橘色盒子设置距离绿色盒子外边距的时候,两个盒子还是粘在一起的 -->
    <div class="box1">
        <div class="box2"></div>
    </div>
   * {
        margin: 0;
        padding: 0;
        }
    .box1 {
            width: 200px;
            height: 200px;
            background-color: darkgreen;
           
            /* 解决办法一:使用内边距padding实现,哪个盒子大就给哪个盒子设置内边距 */
            /* padding-top:10px; */

            /* 解决办法二:给父元素设置透明边框 */
            /* border: 1px solid transparent; */

            /* 解决办法三:给父元素添加  overflow:hidden; */
            overflow:hidden;
        }
        .box2 {
            width: 100px;
            height: 100px;
            background-color: coral;
            margin-top: 10px;   
        }

在这里插入图片描述

2-7、margin的塌陷问题(面试题)

对应的hack:

在这里插入图片描述

  <!-- margin的塌陷问题 就是一个盒子设置了margin-bottom:20px;    一个盒子设置了margin-top:50px;   
        出现的问题就是两个盒子之间的间距并不是70px,而两个盒子之间的间隔是最大数值50px  -->
   
       <div class="box1"></div>
       <div id="wrap">
            <div class="box2"></div>
       </div>  
 * {
        margin: 0;
        padding: 0;
        }
    .box1{
        width: 1000px;
        height: 100px;
        background-color: blue;
        margin-bottom: 20px;
       
         /* 解决方法一:给一个元素身上设置足够的间隔
           (注意要把之前设置的margin-button:20px;和margin-top:50px;都注释掉)*/
        /* margin-bttom: 70px; */
    }


    .box2{
        width: 200px;
        height: 50px;
        background-color: cyan;
        margin-top: 50px;
       
    }
  

     #wrap{
         overflow: hidden;
     }

   /* 解决方法二:给其中一个元素添加一个父亲,给父亲设置overflow:hidden;
    (注意要把之前设置的margin-button:20px;和margin-top:50px;都显示出来哦) */ 

在这里插入图片描述

2-8、鼠标手型

对应的hack:

  • 低版本中 cursor:hand;
  • cursor:pointer;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值