• CSS3重点总结


    CSS3重点总结
    (1)兄弟选择器:2种:+、 ~
    1.相邻兄弟选择器(+):选择器1+选择器2
    选择"选择器1"相邻的后一个兄弟"选择器2"
    强调:选中的是自己相邻的下一个元素,不是自己

    2.通用兄弟选择器(~):选择器1~选择器2
    选择"选择器1"之后的所有兄弟"选择器2"
    + 和~的区别:
    (1)+只选相邻一个,~选之后所有
    (2)+要求必须相邻,如果相邻元素不满足+后选择器要求则不选
    (3)~跳过之后所有不满足选择器条件的元素。

    何时使用兄弟选择器:只要选兄弟元素,就用兄弟选择器

    (2)属性选择器:根据元素现有的属性和属性值特征,选择元素
    何时使用属性选择器:如果现有属性已经可以区分元素
    语法:只要使用属性选择器,必须用[]
    1.元素[属性] : 匹配具备 属性的 指定元素
    例如: p[id] : 匹配具备id属性的p元素

    2.元素[属性1][属性2] :
    p[id][class] : 匹配出所有即具备id属性,又具备class属性的p元素

    3.元素[属性=值] :
    input[type="text"] : 匹配type的值为text的input元素

    4.元素[属性~=值] :选择属性名中包含指定单词的元素
    input[class ~= second] :
    <input class="first second" /> 选中
    <input class="myseconddiv" />

    ~= : 包含指定的数据(独立)
    = : 只有指定的数据

    5.[属性名^="关键字"]:选择以"关键字"开头的属性值

    6.[属性名*="关键字"]:选择包含"关键字"的属性值

    7.[属性名$="关键字"]:选择以"关键字"结尾的属性值


    (3)伪类选择器:
    (1)元素状态伪类(多数应用在表单元素上):主要匹配元素的禁用、启用、选中状态
    :disabled 匹配每个被禁用的元素
    :enabled 匹配每个已启用的元素
    :checked 匹配每个被选中的元素(只用于单选按钮和复选框)

    (2)目标伪类:突出显示活动的HTML锚,用于选取当前活动的目标元素
    :target
    何时使用:需要跳转到的锚点位置元素发生样式变化

    (3)结构伪类:主要从元素的结构(层级结构)上来进行划分的
    :first-child 匹配属于其父元素的首个子元素
    :last-child 匹配属于其父元素的最后一个子元素
    :empty 匹配没有子元素(包含文本、换行、空格)的元素
    <p>这是一个段落</p> 非empty
    <div></div> empty
    :only-child 匹配属于其父元素的唯一子元素
    :nth-child(n) 选择器匹配属于其父元素的第 n个子元素

    (4)否定伪类:选择所有不满足条件的元素
    :not(selecotr)

    (5)伪元素选择器:主要针对元素中的文本内容进行匹配的(一般用于 排版、首字符突出等操作)
    :first-letter:选取指定选择器的首字母
    :first-line:选取指定选择器的首行
    ::selection:匹配用户选取的部分

    (4)内容生成:通过css 向元素的前面或后面增加一部分内容
    :before :当前元素内容的开始位置之前
    :after :当前元素内容的结束位置之后

    如何使用(2步):
    1.先使用:before或:after 选择要生成内容的位置
    2. 使用content属性在选中位置生成内容
    content属性后,可跟3种内容:文字,图片,计数器
    普通文字: content:"提示"
    图片: content:url(路径)
    计数器: content:counter(计数器名)
    例如:
    选择器:before{content:内容}——在原内容开头生成
    选择器:after{content:内容}——在原内容结尾生成
    选择器:before/after{content:counter(计数器名)}

    (5)计数器:能按规律生成序号的属性
    如何使用(3步):
    1. 创建计数器属性:在使用计数器范围的父元素上
    父元素{counter-reset:计数器名}
    2. 设置计数器步进:在使用计数器的元素上
    当前元素{counter-increment:计数器名 步进数}
    3. 使用计数器生成序号:
    选择器:before/after{content:counter(计数器名)}

    计数器的执行:默认从0开始,先加一次步进,再取号

    厂商前缀:特定浏览器厂商对特定属性增加的与本厂商对应的前缀。
    -moz- Firefox
    -webkit- Chrome Safari
    -ms- IE

    (6)多列
    1.分隔列:把一段文本拆分成几列
    column-count:规定元素被分隔的列数
    2.列间隔:设置列与列之间的距离
    column-gap:间隔
    3.列规则:可以在列与列之间设置一条间隔线,列规则可以设置间隔线的样式、颜色、粗细
    column-rule:大小 样式 颜色;
    column-rule-
    column-rule-style:
    column-rule-color:
    4.浏览器兼容
    1、IE10 以及 Opera 浏览器支持多列属性
    2、FireFox 需使用前缀 -moz-
    -moz-column-count:
    -moz-column-gap:
    -moz-column-rule:
    3、Chrome 和 Safari
    -webkit-column-count:
    -webkit-column-gap:
    -webkit-column-rule:

    (7)CSS Hack:针对不同浏览器书写的css代码 (浏览器兼容性所引发的问题)
    浏览器都有两种解析网页的模式:
    1.标准模式:严格按照XHTML或HTML4.0标准,解析网页
    只要符合标准的网页,在不同浏览器显示效果应该是一致的。
    2.混杂模式:按照浏览器自带的规则,解析网页
    没有标准可循,同一网页在不同浏览器的加载效果可能不一致

    如何规定浏览器使用标准模式解析:DOCTYPE

    浏览器兼容问题
    1、margin和padding
    ie6中 默认的 maring 偏大
    解决方案:body{margin:0px;}
    2、居中布局
    ie6以及低版本浏览器:通过父元素的text-align:center;完成居中
    高版本浏览器(ie6,ie7+,chrome,firefox,opera,safari):通过当前元素的margin实现即 margin:0 auto;
    3、元素高度与内容
    ie6 : 元素的高度至少包括内容
    其他:元素高度会超出容器
    解决方案:overflow属性
    4、子元素设置上外边距时
    ie6:正常显示
    其他版本:子元素的上外边距会认为是父元素的上外边距
    解决方案:
    1、给父元素设置边框
    2、设置父元素的 padding-top

    5、HTML头部引用Hack
    通过HTML条件注释完成
    <!--[if 条件]>
    <![endif]-->

    IE6:
    <!--[if IE 6]>
    编写HTML
    引入css
    <![endif]-->

    大于IE6的版本:
    <!--[if gt IE 6]>
    <![endif]-->

     

     

    1.变形(transform):迅速变化
    2d
    (1)旋转:围绕一个参照原点(transform-origin),旋转指定角度,默认为顺时针
    语法:transform:rotate(ndeg)
    n为正 则按顺时针旋转
    n为负 则按逆时针旋转

    参照原点:默认在元素的中心点,坐标(width/2,height/2)
    坐标原点:在元素的左上角,坐标为(0,0)

    修改参照原点(3种方法):
    1.transform-origin:x坐标 y坐标 (x向右为正;y向下为正)
    2.transform-origin: right bottom
    3.transform-origin:100% 100%

    注意:rotate不但旋转元素,而且同时旋转绘图坐标系的方向。如果配合着其他的变形一起来做的话,rotate在前的话,会影响之后延坐标轴的其他变形。
    解决方案:如果配合变形一起来做,最好将rotate放在最后一个函数上
    比如:transform:translate(50px,0px) rotate(30deg);
    translate不受影响,水平移动
    transform:rotate(30deg) translate(50px,0px);
    translate受影响,延旋转后的x轴向右下移动50px


    (2)位移:延 坐标方向 移动指定的距离
    语法:translate(x轴移动距离,y轴的移动距离);
    x : 正为右,负为左
    y : 正为下,负为上

    transform:translate(50px,50px);
    注意:位移不会影响其他元素位置,但可能会盖住周围元素
    其他两个单方向位移:
    translateX(距离);
    translateY(距离);


    (3)缩放:将指定 坐标轴 上的坐标缩放指定 倍数
    语法:transform:scale(倍数)——等比例缩放
    倍数:0-1之间,缩小;>1,放大。
    transform:scale(x轴缩放倍数,y轴缩放倍数)
    强调:缩放同样受参照原点影响!
    其他两个单向缩放:scaleX(倍数);
    scaleY(倍数);


    (4)倾斜:延 坐标轴方向 ,倾斜指定 角度
    语法:transform:skew(ndeg);——仅延x轴倾斜
    transform:skew(ndeg,ndeg);——延x轴,y轴同时倾斜

    x轴方向:正角度向左倒,负角度向右倒
    y轴方向:正角度左侧向上斜,负角度左侧向下斜

    强调:倾斜受参照原点影响。默认参照原点在元素中心点。
    其它两个单向倾斜:skewX(ndeg)
    skewY(ndeg)

     

     

    3d
    perspective属性:设置假定的人眼位置到投影平面的距离
    如何使用:设置在父元素上
    浏览器兼容性:
    Chrom,Safari : -webkit-perspective
    Firefox : -moz-perspective

    坐标轴:3个x轴,y轴,z轴
    x轴向右为正,y轴向下为正,z轴靠近观察者的方向为正
    (1)3d旋转:以指定*坐标轴*为圆心旋转指定角度
    语法:transform:rotateX(ndeg)
    transform:rotateY(ndeg)
    transform:rotateZ(ndeg)
    n为正,顺时针;n为负,则逆时针

    (2)3d位移:特指延z轴移动
    语法:transform:translate3d(x,y,z)——三个方向的位移
    translateZ(z)——仅延z位移

    (3)3d缩放:特指延任意坐标轴缩放
    语法:transform:scaleZ(倍数)——将z坐标x指定倍数
    强调:如果scale与其他变形函数连用,应放前边。

    x y z
    正 向右 向下 向前
    负 向左 向上 向后

     

    2.过渡(transition):从*开始样式*,经过指定*时间*后,缓慢过渡到*结束样式*
    过渡四要素
    (1) 专门用于设置要过渡的属性名
    语法: transition-property:属性名1,属性名2 ...;

    (2)专门用于设置持续时间
    语法:transition-duration:n1s,n2s ...;

    (3)专门用于设置速度变化类型
    语法:transition-timing-function:
    备选值:ease: 先加速后减速(默认值)
    linear: 匀速变化
    ease-in: 加速
    ease-out: 减速
    ease-in-out: 先加速后减速

    (4)专门用于设置延迟开始时间
    语法:transition-delay:n1s,n2s ...;

    简版transition也可以同时设置多个属性的过渡
    transition: 属性名1 持续时间 速度类型 [延迟],
    属性名2 持续时间 速度类型 [延迟],
    ...

    3.动画(animation) - 关键帧动画
    关键帧:动画执行过程中,物体在某一位置上的特殊状态
    关键帧动画:使用连续的关键帧,控制物体连续的状态变化
    何时使用关键帧动画:
    连续,有规律的过渡——过渡transition
    无规律的连续变化——动画animation

    如何实现:2步:
    1. 定义关键帧:
    @keyframes 动画名{
    from{开始样式}
    n%{当动画进度播放到n%时的样式}
    ...
    to{结束样式}
    }
    2. 触发动画:
    animation:动画名 持续时间 速度类型

    如何使用:写在非伪类的选择器,页面加载后自动触发
    写在伪类中,伪类触发时才播放

    浏览器兼容性:@keyframes animation Firefox IE
    @-webkit-keyframes -webkit-animation Chrome Safari
    @-o-keyframes -o-animation Opera


    动画子属性:
    1、animation-name : @keyframes(动画)名称
    2、animation-duration : 动画时长
    3、animation-timing-function:动画速度函数
    4、animation-delay:动画的延迟时间
    5、animation-iteration-count : 播放次数
    取值:
    1、具体数值
    2、infinite(无限次播放)
    6、animation-direction : 动画播放方向
    取值:
    1、normal 正常播放
    2、alternate 轮流播放
    奇数次数:正向播放
    偶数次数:反向播放
    7、animation-fill-mode:动画播放前后的效果
    备选值:
    1、none:不改变默认行为
    2、forwards:动画完成后保证最后一个属性状态
    3、backwards:动画播放前,显示开始属性值
    4、both
    8、animation-play-state:控制动画播放与暂停
    备选值:
    1、paused : 暂停动画
    2、running : 播放动画
    使用场合:
    1、配合伪类选择器
    2、结合Javascript使用

    animation:动画名称 持续时间 动画方式 延迟时间 重复次数 是否交替执行 结束状态
    交替执行:alternate:单次正向执行,偶数次反向返回
    结束状态:forwards:当动画完成时保持最后一帧状态

     

     

    blog首页:http://www.cnblogs.com/hubgit/
  • 相关阅读:
    POJ 1637:Sightseeing tour
    bzoj 3997: [TJOI2015]组合数学
    [CEOI2008]order
    【网络流24题】星际转移问题
    Codeforces Round #460 D. Karen and Cards
    bzoj 3142: [Hnoi2013]数列
    codeforces586B
    codeforces631B
    codeforces548B
    codeforces515B
  • 原文地址:https://www.cnblogs.com/hubgit/p/5135021.html
Copyright © 2020-2023  润新知