zoukankan      html  css  js  c++  java
  • CSS基础

     一、什么是CSS

      W3C标准中,倡导有3:其一为内容与表现分离,其二为内容与行为分离,其三为内容结构的语义化。其倡导中第一条的“表现”指的便可以说是CSS。CSS全称Cascading StyleSheets,中文名为层叠样式表,是一种用来表现HTML等文件样式的计算机语言。

     二、CSS的常用选择器

      1、标签选择器

        写法:HTML标签名

        作用:可以选中页面中,所有与选择器同名的HTML标签。

        

      2、类选择器    

        写法:.class名{}
        调用:在需要调用选择器样式的标签上,使用class="class名"调用选择器。
        优先级:类选择器大于标签选择器 。两个起冲突时,优先级高的生效

        

      3、id选择器

        写法:#id名{}

        调用:需要调用样式的标签,起一个id="ID名"

        优先级:id选择器大于class选择器

        注意:整个页面中,不能发出现同名ID

      

            

          【class选择器与ID选择器的区别】

          1、写法不同:class选择器用.声明,ID选择器用#声明。
          2、优先级不同:ID选择器>class选择器。
          3、作用范围不同:class选择器可以多次调用,ID选择器只能使用一次。

      4、通用选择器

        写法:*{}

        作用:可以选中页面中所有的HTML标签。

        优先级:最低!!!

        

      5、并集选择器

          写法:选择器1,选择器2,……,选择器n{}

          生效规则:多个选择器取并集,只要标签满足其中任意一个选择器,样式即可生效。

        

      6、交集选择器

          写法:选择器1选择器2……选择器n{}  所有选择器紧挨着,没有分隔

          生效规则:多个选择器取交集,则必须满足所有选择器的要求,才能生效。

        

      7、后代选择器

          写法:选择器1 选择器2 …… 选择器n{}  选择器之间有空格间隔

          生效规则:只要满足,后一选择器是前一个选择器的后代,即可生效。(后代包括子代、孙代、重孙代。。。)通俗的讲:只要后一个选择器,在前一个选择器里面即可。

        

      8、子代选择器

          写法:选择器1>选择器2>……>选择器n{}  选择器之间用>间隔

          生效规则:必须满足,后一个选择器是前一个选择器的直接子代,才能生效。(中间不能间隔人和标签)。

        

     三、CSS导入方式和优先级

      1、优先级的权重问题

          1、css生效的第一原则是:近者优先!!即,哪个选择器作用于最里层标签,则这个选择器生效。
          2、当选择器作用于同一层时,可以根据优先级权重,进行累加计算:
            id选择器*100>class选择器*10>标签选择器*1
            注意:并集选择器,相当于多个选择器拆开写,所以,并集选择器优先级不能累加。
          3、当选择器作用于同一层,且优先级权重相等时。则,写在最后选择器生效。

      2、引入css的三种方式

          1、行内样式表:直接在HTML标签中,使用style=""的方式引用;

               <div style="height:100px;"></div>
            优点:使用灵活,优先级权重最高;
            缺点:不符合w3c关于内容与表现分离的要求;不利于样式复用;
          2、内部样式表:在<head></head>标签中,使用<style>标签包裹css代码
            特点:一定程度的实现了HTML与css的分离,但是分离不够彻底,没有办法多页面公用样式。
          3、外部样式表:将css单独写入css文件中,并与HTML文件关联。
            优点:彻底实现HTML与css的分离,符合w3c规范,有利于多页面复用统一样式;

      3、导入css文件的两种方式

          ①在<head>标签中,使用link链接:<link rel="stylesheet" type="text/css" href="css/02_css.css" />
          ②在<style>标签中,使用@import导入; @import url("css/02_css.css");【一般不用】

      4、【两种导入方式的区别】

          ①link属于标准的HTML标签,而@import不是标准标签
          ②link可以兼容所有低版本浏览器,而@import只在css2之后能用;
          ③link是将两个文件链接起来,起桥梁作用;而@import相当于将css文件复制到HTML文件中;
          ④link会在HTML文件边加载的过程中,边链接css文件;@import会在HTML文件全部加载完以后,再导入css文件;
          综上所述,我们使用link链接的方式,加载css文件。

      5、引入外部css样式表

          rel:选择stylesheet
          type:选择text/css:可以省略
          href:表示链接的css文件路径

          

     四、CSS常用文本属性 

        1、字体、字号类
          ①font-weight:字体粗细;bold-加粗 normal-正常 、lighter-细体
           也可以使用100~900之间的数值。400表示normal,700表示bold
          ②font-style:字体样式。italic-倾斜、normal-正常
          ③font-size:字号。可以写px单位,也可以写%
            200%表示浏览器默认大小(16px)的两倍=32px;
          ④font-family:字体系列(字体族)。可以直接写字体名,也可以写字体系列名;
            常用字体系列:serif-衬线体 sans-serif-非衬线体;
             font-family可以接收多个值,用逗号分隔。表示优先使用第一个,如果没有这种字体,依次向后使用。
            通常一个值放字体系列名;
             eg:font-family:"黑体","微软雅黑",sans-serif;
          ⑤font缩写形式:
            >>>顺序必须是:
               font-weight font-style font-size/line-height font-family
            >>>不同属性之间,用空格分隔;
            >>>font-size/line-height必须一组,用/分隔;
            >>>font-family多个字体之间,用逗号分隔;
            >>>eg:font:bold italic 6px/100px "微软雅黑",sans-serif;

          

        2、字体颜色
          ①color:字体颜色 。可以使用单词、十六进制、RGB等
          ②opacity:透明度,可选值0-1
            [opacity和rgba的区别]
            rgba本身可以设置颜色,而opacity必须配合其他颜色属性来用;
            rgba仅仅是让当前元素设置的所有文字、背景、子元素都透明;

                  

         CSS中的颜色表示方式
          ①直接使用颜色的英文单词表示:red、green、blue
          ②使用颜色的十六进制数表示:#ffff00
            六位数,两两分组,分别表示红、绿、蓝的配比;
          ③RGB(0~255,0~255,0~255);三位数,分别表示红、绿、蓝的配比;
           rdba();第四位数,表示透明度。

        3、行距、对齐类
          ①line-height:行高。可以写px单位、可以直接写数字(表示默认行距的几倍)、
           也可以写%(表示默认行距的百分比)
            >>>行高重要作用:怎么让单行文字在div中垂直居中?
              设置行高等于div的高度,即可让单行文字垂直居中。
          ②text-align:设置区域内的行级元素水平方式;left/center/right
          ③letter-spacing:字符间距,字与字之间的距离
          ④text-decoration:文本修饰:
              underline-下划线、overline-上划线、line-through-删除线、none
          ⑤overflow:设置超出区域文字的显示方式。
              >>>overflow;hidden;超出区域的文字隐藏不显示;
              >>>overflow:scroll;无论文字多少,都会显示水平垂直滚动条;
              >>>overflow:auto;自动,默认效果。文字多显示滚动条,文字少不显示滚动条;
              >>>可以使用overflow-x和overflow-y单独修改两个方向的滚动条;
                overflow-y:scroll;overflow-x:hidden;
          ⑥text-overflow:设置行末多余文字的显示方式;
              >>>clip-多余文字裁剪掉 ellipsis-多余文字省略号显示
              >>>显示省略号,需要配合white-space:nowrap;使用
              >>>【重点内容】设置行末显示省略号:(三行代码,缺一不可)
                overflow: hidden;
                white-space: nowrap;
                text-overflow: ellipsis;
          ⑦white-space:nowrap;设置中文行末,不断行显示
          ⑧text-indent:首行缩进。
          ⑨-webkit-text-stroke: 0.5px blue; 文字描边
            -webkit:表示只要webkit内核的浏览器生效、常见的有chrome、safari
          ⑩text-shadow:文字阴影。有四个属性值,空格分隔;2px 2px 2px green;
              >>>水平阴影距离,正数表示阴影右移,负数左移;
              >>>垂直阴影距离,正数表示阴影下移,负数上移;
              >>>阴影模糊距离,0表示阴影一点不模糊;
              >>>阴影的颜色;

     4、CSS常用背景属性

        1、background-color:背景色
        2、background-image:背景图。使用url("")选择背景图片。
           背景图和背景色同时存在时,背景图覆盖背景色。
        3、background-repeat:背景图的重复方式。
          no-repeat:不平铺、repeat:平铺、repeat-x:沿x轴平铺、repeat-y:沿y轴平铺。
        4、background-size:背景图的大小
          [指定宽度、高度]
          >>>宽度高度的指定,可以写px,也可以写%(父容器宽高的百分比)
          >>>当写两个属性时,分别表示宽度、高度;
          当写一个属性时,表示宽度、高度将会等比缩放;
          [其他属性值]
          >>>contain:图片等比缩放,直到宽或高中较大的一边缩放到100%为止。
          (可能导致较短的一边<100%,图片无法盖住全部区域)
          >>>cover:图片等比缩放,直到宽或高中较小的一边缩放到100%为止。
          (可能导致较大的一边>100%,图片超出区域显示不全)
        5、background-position:背景图偏移量
            >>>指定位置:left/center/right top/center/bottom
              当只写一个值时,另一个默认居中。
            >>>指定坐标:两个属性分别表示 水平位移 垂直位移
          ①坐标的值,可以是px单位,也可以是百分数
          ②当写像素单位时:(左负右正,上负下正)
            水平方向:正数右移,负数左移
            垂直方向:正数下移,负数上移
          ③当写%(百分数)时:
            一般只能是正数。表示的是,去掉图片的宽高,剩余空白区域的分布比例。
            eg:background-position:30% 水平方向去掉图片宽度,剩余区域3:7分。

     5、CSS伪类选择器

        1、写法:伪类选择器,在选择器后面,用:分隔,紧接伪类状态;
            eg: .a:link
        2、超链接的伪类状态:
          :link:未访问状态 :visited已访问状态
          :hover-鼠标指上状态 :active-激活选定状态(鼠标点下未松开)
          注意:当超链接多种伪类状态同时存在时,必须按照link-visited-hover-active的顺序,
             否则会导致部分选择器不生效
        3、input的伪类状态:
          :hover :focus(获得焦点状态) :active
          注意input的多种状态同时存在时,必须按照上面的顺序;
        4、其他标签,基本只用:hover事件;

      6、CSS盒子模型

        1、margin 外边距

          ①、只写一个值:表示四周的外边距均为指定的值;
          ②、写两个值:第一个数为上下外边距 第二个数为左右外边距;
          ③、写三个值:分别表示上右下三个方向,左边默认等于右边;
          ④、写四个值:表示上右下左四条边顺时针方向;
          ⑤、margin:0 auto;设置块级元素,在父容器中水平居中!!!
        2、padding 内边距   

          设置方式与magin完全相同;
          注意:设置padding,将会导致div区域被撑大!!!使用时必须注意div的实际的宽高是多少!!!!

        3、边框

          1、设置边框需要三个属性:宽度,样式,颜色    原则上三个属性缺一不可,顺序可以随便修改;
          2、可以使用top、right、bottom、left分别设置四个边

        4、当父盒子包裹子盒子,给子盒子添加margin-top时,子盒子与父盒子的上边线并不能分开,而是会导致,两个盒子同时掉下来。    

          [解决办法]
          1、给父盒子添加一点padding-top;不推荐使用,会导致父盒子结构多余1px的padding;
          2、给父盒子添加1px的border-top;同样会导致1px的多余空间,不推荐使用;
          3、给父盒子或者子盒子添加浮动;可能会由于浮动,一定程度的影响页面的布局;
          4、给父盒子添加overflow属性;推荐使用的方式。

        5、border-radius 圆角    

          1、border-radius可以接受8个属性值,分别表示:x轴(左上、右上、右下、左下角)/y轴(左上、右上、右下、左下角)
              eg:border-radius:10px 20px 30px 40px/10px 20px 30px 40px
          2、缩写形式:
            只写x轴,y轴将默认等于y轴;
            四个角写不全,默认对角相等;
            只写一个值,默认8个数均等;
              eg:border-radius:50px 20px;
          3、当圆角弧度>=正方形边长一半,将会显示为圆形。

        6、border-image  图片边框    

          1、border-image:一共可以放10个属性值:
            ①图片的路径:url();
            ②图片的切片宽度:4个值,分别代表上下左右四跳边;
          通过4个切线切割,可以将图片分为九宫格,九宫格四个角分别对应边框的四个角(不会进行任何拉伸),九宫格四个边分别对应四条边框(会根据设置进行拉伸/铺完/重复等操作)
          
              注意:写的时候必须不能带px单位!!!!!
            ③边框的宽度:4个值,分别代表上右下左四条边框的宽度;
              注意:写的时候必须带px单位,与切片宽度用/分隔
            ④边框的重复方式:stretch(拉伸)、round(铺满)、repeat(重复)
          [round和repeat的区别]
          round:会对四条边进行适当的拉伸、压缩,确保四条边可以重复整数次;
          repeat:会保持每条边的宽度长度比例不变,可能导致四角处,无法显示一条完整的边;

        7、box shadow  盒子阴影

          6个属性值,用空格分隔;
          ①x轴阴影距离(必选):可正可负,正----右移,负----左移;
          ②y轴阴影距离(必选):可正可负,正----下移,负----上移;
          ③阴影的模糊半径(可选):只能是正数,默认为0.数值越大,阴影越模糊;
          ④阴影扩展半径(可选):可正可负,默认为0,数值增大,阴影扩大;数值减小,阴影减小;
          ⑤阴影颜色(可选):默认为黑色
          ⑥内外阴影(可选):默认为外阴影。 inset表示内阴影

        8、盒子模型分类
          1、 标准盒子(W3C盒子): 我们设置的宽度和高度,仅仅包含content部分; 再添加padding或border,会导致盒子变大;
          2、 IE盒子(怪异盒子): 我们设置的宽度和高度,包含content+padding+border;再添加padding或border,会压缩content区域,但盒子总大小不变; 

      7、CSS浮动   

        1、标准流中的块级盒子,宽度将会自动伸展为100%;而浮动的块级盒子,宽度不会自动伸展,而是由内容撑开;
        2、 当一个盒子浮动, 标准流中未浮动的其他盒子,将视浮动盒子不存在而占据浮动盒子原来的位置。(浮动盒子,会盖在这个盒子的上方),但是,未浮动盒子中的文字内容,将会受到浮动盒子宽度的影响。(未浮动盒子中的内容,不会被浮动盒子盖住)

        3、由于第二条的原因。可以给受影响的盒子,添加clear属性,清除掉浮动盒子对自身的影响。
          clear可选值:left-清除左浮动影响, right-清除右浮动影响;
           both-同时清除左右浮动影响 ,常选;   

        4、 父盒子没有指定高度。 如果子盒子没有浮动,则父盒子的高度可以被子盒子撑开。如果,父盒子中的所有子盒子都浮动,则父盒子高度将变为0;
          

          [解决所有子盒子浮动,父盒子高度塌陷的问题]
        ① 给父盒子也添加浮动;
        ② 给父盒子添加overflow属性; 推荐使用!!!
        ③ 在父盒子最后,添加一个高度为0的空div。 给这个div添加clear: both;属性,清除掉浮动效果。
        ④可以将第三条的div,用伪对象选择器::after实现:
          #div4::after{
              display:block;
              content:"";
              height:0px;
              clear:both;
              }

    8、CSS定位  

       [相对定位 relative]
        1、使用position: relative;设置元素为相对定位元素;
        2、使用top、right、left调整元素的位置。当left和right同时存在时,left生效;top和bottom同时存在时,top生效。
        3、定位机制:
          ①相对定位时相对于自己原来的位置定位。当top等属性不指定时,元素位置不会发生改变
          ②相对定位,不会释放掉元素在原有文档流中的位置。不会影响其他文档流元素的位置;
        4、关于元素z轴重叠
          ①定位元素,默认的z轴高于普通文档流元素。
          ②同为定位元素,后来者居上。后面的盖住前面的。
          ③可以使用z-index手动调节定位元素的上下层z轴顺序。
          z-index默认为0,而且只能用于定位元素。

       [绝对定位]
        1、使用position:absolute;设置元素为绝对定位;
        2、定位机制:
          ①相对于第一个非static定位的祖先元素进行定位。(即相对于使用了relative、absolute、fixed定位的祖先元素进行定位)
          ②如果所有的祖先元素都未定位,则相对于浏览器左上角进行定位;
          ③使用absolute的元素,会从文档流中完全删除。原有空间会被释放。
       [固定定位]
        1、使用position:fixed;设置固定定位;固定定位,是一种特殊的绝对定位!!!!只是祖先元素无法使用定位锁住;
        2、定位机制:永远相对于浏览器的左上角进行定位,而且不随滚动条的滚动而滚动

       [z-index属性]
        1、作用:根据z-index属性设置的数值,决定元素在z轴方向上的层叠次序;
        2、使用要求:
          ①z-index 只能给定位元素调整层叠次序。relative、absolute、fixed
          ②元素的z-index属性,要考虑父容器z-index的约束:
            >>>如果父容器设置了z-index属性,则子容器的所有元素,将不能脱离父容器层次的约束。(即,父容器设置了z-index,则子容器只能以父容器的数值为准。再给子容器设置z-index,只能调整子容器在父容器层次之内的层叠次序)
            >>>如果父容器没有设置z-index,或者设置z-index:auto;则子容器调整z-index将不受父容器层次约束。
        3、z-index:auto和z-index:0的异同点
          ①z-index:auto;是默认值,与z-index:0;处于同一个平面;
          ②z-index:0;会约束子元素必须与父容器在同一平面;
          z-index:auto;不会约束子元素的层次;
       [clip属性]

        1、作用:clip属性用于裁切图片标签,显示图片的指定区域;
        2、使用要求:clip属性,只能作用于有absolute或fixed定位的图片标签上;
        3、clip属性,接受一个rect()函数,函数传入四个值,分别表示上右下左四条切线的位置;
          注意:与其他属性不同的是,rect中的四个值,上下两个值的距离都是从上边量取;左右两个值都是从左边量取;


         



        




     

  • 相关阅读:
    hibernate之初学复合主键
    hibernate之初学增删改查
    hibernate之配置文件帮助文档
    hibernate之初学项目搭建
    Python调用OpenCV读显写
    C++写入txt
    C++逐词读取txt
    C++逐行读取txt
    C#调用C++系列二:传结构体
    C#调用C++系列一:简单传值
  • 原文地址:https://www.cnblogs.com/wuhao752718372/p/CSS.html
Copyright © 2011-2022 走看看