zoukankan      html  css  js  c++  java
  • css的一些知识点的总结(二)

    9.如何清除浮动?

    1、父级添加overflow:hidden

    子元素浮动,会导致父元素的高度坍塌,对页面的布局造成影响。只要给父元素添加,overflow:hidden属性,就可以解决浮动带来的影响。

    <ul>
        <li></li>
        <li></li>
        <li></li>
    </ul>
    <style>
        ul{
            overflow: hidden;
            padding: 0;
            margin: 0;
            background-color: #5c6b77;
        }
        li{
            float: left;
            height: 100px;
            width: 100px;
            margin-left: 20px;
            background-color: #42b983;
        }
    </style>

    通过触发BFC方式,实现了清除浮动。优点而言:代码较简洁;缺点而言:内容增多时,容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素。

    2.通过属性clear:both,达到清除浮动的目的

    元素浮动后,只需要在浮动元素中添加一个块级元素,并添加一个clear:both属性,便可以达到清除浮动。

    <style>
        li{
            height: 100px;
            width: 100px;
            float: left;
            background-color: #42b983;
            margin-left: 20px;
        }
        ul{
            background-color: #2c3e50;
        }
    </style>
    <ul>
        <li></li>
        <li></li>
        <div style="clear: both"></div>
    </ul>

    这种添加方式,优点而言:通俗易懂,且方便;缺点而言,添加无意义标签,语义化差,不建议使用。

    3.给父级元素添加伪类after

    这种方式也是使用clear:both的方法达到效果,只是变相的使用了伪类after,使得页面结构更简洁,也是常用的清理浮动的方式。

    <ul class="clearfix">
       <li></li>
        <li></li>
    </ul>
    <style>
     ul{
         background-color: #2c3e50;
     }   
     li{
         height: 100px;
         width: 100px;
         float: left;
         background-color: #42b983;
         margin-left: 20px;
     }
     .clearfix:after{
         content:'';
         height: 0;
         display: block;
         clear: both;
         visibility: hidden;
     }
    .clearfix{
    *zoom:1}
    </style>

    注:zoom:1,就是IE6专用的触发hasLayout属性的,hasLayout是IE特有的一个属性,很多的IE的css bug都与其息息相关。在IE中,一个元素要么自己对自身的内容进行计算大小与组织,要么以来父元素来计算尺寸与组织内容。当一个元素的hasLayout属性值为true时,可负责对自己和可能的子孙元素进行尺寸计算与定位。为了防止低版本的IE不支持after选择器,会再加上此触发hasLayout。

    这个推荐使用,优点而言:符合闭合浮动思想,结构语义化正确;缺点而言:ie6-7不支持伪元素,使用zoom:1触发hasLayout属性。

    4.使用双伪类

    此方式与第三种原理一样。

    <ul class="clearfix">
        <li></li>
        <li></li>
    </ul>
    <style>
        li{
            height: 100px;
            width: 100px;
            float: left;
            background-color: #ff5777;
        }
        ul{
            background-color: aqua;
        }
        .clearfix:after,
        .clearfix:before{
            content: '';
            display: block;
            clear: both;
        }
    .clearfix{
    *zoom:1}
    </style>

    优点:代码更加简洁;缺点的话,用zoom:1触发hasLayout属性,推荐使用。

    10.CSS中link与@import的区别

    1.link属于html标签,只可放在html源码中使用;@import可看作为CSS样式,作用为引入CSS的样式功能;

    2.在页面加载时,link会被同时加载;而@import引用的CSS会在页面加载后,才加载引用的CSS;

    3.@import只有在IE5以上,才可被识别,而link是html标签,不存在浏览器兼容性问题;

    4.link引入样式的权重大于@import的引用

    11.position中的fixed与absolute的共同点与不同点

    共同点:

    1.改变行内元素的呈现方式,display被设置为block。

    2.让元素脱离普通流,不占据空间。

    3.默认会覆盖到非定位元素上。

    不同点:

    1.absolute的根元素可以设置,相对于static定位以外的第一个父元素进行定位;而fixed的根元素是固定为浏览器窗口。

    2.当滚动网页时,fixed元素与浏览器窗口之间的距离是固定不变的。

    12.transition与animation的区别

    1).transition需触发一个事件才可以改变属性,而animation不需要触发任何事件的情况下,会随时间变化而改变属性。

    2).transition为2帧,从from..to..,而animation可以一帧一帧的。

    3).transition只可触发一次,而animation可以设置很多属性,如循环次数,动画结束状态。

    4).transition是过渡,是样式值变化的过程,只有开始与结束;animation中,通过与关键帧结合可设置中间帧的一个状态。

    13.CSS的优先级

    1).!important(属性后面加!important会覆盖页面内任何位置定义的元素样式)

    2).行内样式(作为style属性写在元素内的样式)

    3).ID选择器(id)

    4).类选择器(class)

    5).标签选择器(p、ul、div等)

    6).通配符选择器(*)

    7).浏览器自定义或继承

    14.雪碧图

    雪碧图是一种网页图片应用处理方式,允许将一个页面涉及到的所有零星图片包含在一张大图中。

    优点:

    1.减少加载网页图片时,对服务器的请求次数;

    2.减少图片的字节;

    3.通过background-position去定位图片在屏幕的哪个位置;

    缺点:

    1.图片合并麻烦;

    2.图片适应性差;

    3.可维护性差。

    15.总结下BFC

    BFC的概念:

    BFC,即block formatting contexts,块级格式化上下文。具有BFC特性的元素,可看作为隔离的独立容器,容器中的元素不会在布局上影响到外面的元素。

    触发BFC的条件有哪些:

    1.body根元素

    2.浮动元素,float中处none以外均可

    3.绝对定位元素(absolute,fixed元素)

    4.display:flex,inline-block,table-cell

    5.overflow除visible以外均可

    BFC的一些特性:

    1.同一个BFC内,外边距会发生折叠

    <head>
    <style>
        div {
            background-color:darkseagreen;
            width: 100px;
            height: 100px;
            margin: 100px;
        }
    </style>
    </head>
    <body>
    <div></div>
    <div></div>
    </body>

    从效果上看,因为两个div元素都处于同一个BFC容器中(body根元素),所以第一个div的下边距与第二个div的上边距发生了重叠,所以两个盒子之间距离只有100px,而不是200px.这并不是CSS的bug,我们可以理解为一种规范,如果想要避免外边距的重叠,可以将其放在不同的BFC容器中.

    <head>
    <style>
       .co{
           overflow: hidden;
       }
       p{
           width: 100px;
           height: 100px;
           background: #42b983;
           margin: 100px;
       }
    </style>
    </head>
    <body>
    <div class="co">
        <p></p>
    </div>
    <div class="co">
        <p></p>
    </div>
    </body>

    2.BFC可以包含浮动的元素(清除浮动)

    浮动元素会脱离普通文档流,来看下下面这个例子.

    <head>
        <style>
    
        </style>
    </head>
    <body>
    <div style="border: 1px solid #000">
        <div style=" 100px;height: 100px;background:#eeeeee;float: left "></div>
    </div>
    </body>

    由于,容器内元素浮动,脱离了文档流,如果触发了父级元素的BFC,那么容器将会包裹着浮动元素.

    <head>
        <style>
    
        </style>
    </head>
    <body>
    <div style="border: 1px solid #000;overflow:hidden;">
        <div style=" 100px;height: 100px;background:#eeeeee;float: left "></div>
    </div>
    </body>

    3.BFC可以阻止元素被浮动元素覆盖

    <head>
        <style>
        </style>
    </head>
    <body>
    <div style="height: 100px; 100px;float: left;background: lightblue">left..</div>
    <div style=" 200px; height: 200px;background: #eee">float</div>
    </body>

    这时,第二个元素有部分被浮动元素所覆盖,如果想避免元素被覆盖,可在第二个元素中加入overflow:hidden

    16.calc、@support、@media各自的含义以及用法

    calc( )函数:动态计算长度值;

    @support:主要用于检测浏览器是否支持CSS的某个属性;

    @media:可针对不同的媒体类型定义不同的样式.

    17.1 rem、1 em、1 vh、1 px各自代表的含义

    rem: rem是全部的长度都相对于根元素<html>,通常做法是给html元素设置一个字体大小,然后其他元素的长度单位就为rem.

    em: 子元素字体大小的em是相对于父元素字体大小.

    vh:视窗的高度,相当于屏幕高的1%.

    px:px像素,相对长度单位,是相对于显示器屏幕分辨率而言的.

     

  • 相关阅读:
    常见linux内核线程说明
    /proc/modules分析
    linux用户空间和内核空间(内核高端内存)_转
    二层交换机/三层交换机/路由器
    NAT--Network Address Translator
    curl命令使用
    (转)XML中必须进行转义的字符
    LFCP
    IPSP问题
    API和schema开发过程问题汇总
  • 原文地址:https://www.cnblogs.com/ljylearnsmore/p/14470083.html
Copyright © 2011-2022 走看看