zoukankan      html  css  js  c++  java
  • CSS扫盲

    1. 引入CSS样式表

    要书写css样式,那css样式书写的位置在哪呢?

    1.1 行内式

    • 概念:称行内样式、行间样式.

      是通过标签的style属性来设置元素的样式

    • 其基本语法格式如下:

    <标签名 style="属性1:属性值1; 属性2:属性值2; 属性3:属性值3;"> 内容 </标签名>

    实际上任何HTML标签都拥有style属性,用来设置行内式。

    • 案例:

    <div style="color: red; font-size: 12px;">玛卡巴卡</div>
    • 注意:

      • style其实就是标签的属性

      • 样式属性和值中间是:

      • 多组属性值之间用;隔开。

      • 只能控制当前的标签和以及嵌套在其中的字标签,造成代码冗余

    • 缺点:

      • 没有实现样式和结构相分离

    1.2 内部样式表

    • 概念:

      称内嵌式

      是将CSS代码集中写在HTML文档的head头部标签中,并且用style标签定义

    • 其基本语法格式如下:

    <head>
    <style type="text/CSS">
        div {
          color: red;
          font-size: 12px;
       }
    </style>
    </head>
    • 注意:

      • style标签一般位于head标签中,当然理论上他可以放在HTML文档的任何地方。

      • type="text/css" 在html5中可以省略。

      • 只能控制当前的页面

    • 缺点:

      没有彻底分离

    1.3 外部样式表

    • 概念:

      称链入式

      是将所有的样式放在一个或多个以.CSS为扩展名的外部样式表文件中,

      通过link标签将外部样式表文件链接到HTML文档中

    • 其基本语法格式如下:

    <head>
      <link rel="stylesheet" type="text/css" href="css文件路径">
    </head>
    • 注意:

      • link 是个单标签

      • link标签需要放在head头部标签中,并且指定link标签的三个属性

    属性作用
    rel 定义当前文档与被链接文档之间的关系,在这里需要指定为“stylesheet”,表示被链接的文档是一个样式表文件。
    type 定义所链接文档的类型,在这里需要指定为“text/CSS”,表示链接的外部文件为CSS样式表。我们都可以省略
    href 定义所链接外部样式表文件的URL,可以是相对路径,也可以是绝对路径。

    2. CSS基础选择器

    2.1 标签选择器

    • 概念:

      标签选择器(元素选择器)是指用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的CSS样式。

    • 语法:

    标签名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3; } 
    • 作用:

      标签选择器 可以把某一类标签全部选择出来 比如所有的div标签 和 所有的 span标签

    • 优点:

      是能快速为页面中同类型的标签统一样式

    • 缺点:

      不能设计差异化样式。

    2.2 类选择器

    类选择器使用“.”(英文点号)进行标识,后面紧跟类名.

    • 语法:

      • 类名选择器

      .类名  {   
        属性1:属性值1;
        属性2:属性值2;
      }
      • 标签

      <p class='类名'></p>
    • 优点:

      • 可以为元素对象定义单独或相同的样式。 可以选择一个或者多个标签

    • 注意

      • 类选择器使用“.”(英文点号)进行标识,后面紧跟类名(自定义,我们自己命名的)

      • 长名称或词组可以使用中横线来为选择器命名。

      • 不要纯数字、中文等命名, 尽量使用英文字母来表示。

    2.3 类选择器特殊用法- 多类名

    注意:

    • 我们可以给标签指定多个类名,从而达到更多的选择目的。

    • 各个类名中间用空格隔开。

    • 多类名选择器在后期布局比较复杂的情况下,还是较多使用的。

    2.4 id选择器

    id选择器使用#进行标识,后面紧跟id名

    • 其基本语法格式如下:

      • id选择器

        #id名 {属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
      • 标签

        <p id="id名"></p>
    • 元素的id值是唯一的,只能对应于文档中某一个具体的元素。

    • 用法基本和类选择器相同。

    W3C标准规定,在同一个页面内,不允许有相同名字的id对象出现,但是允许相同名字的class。

    • 类选择器我们在修改样式中,用的最多。

    • id选择器一般用于页面唯一性的元素身上。

    2.5 通配符选择器

    • 概念

      通配符选择器用*号表示, * 就是 选择所有的标签 他是所有选择器中作用范围最广的,能匹配页面中所有的元素。

    • 其基本语法格式如下:

    * { 属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }

    例如下面的代码,使用通配符选择器定义CSS样式,清除所有HTML标记的默认边距。

    * {
      margin: 0;                    /* 定义外边距*/
      padding: 0;                   /* 定义内边距*/
    }
    • 注意:

      会匹配页面所有的元素,降低页面响应速度,不建议随便使用

    2.6 基础选择器总结

    选择器作用缺点使用情况用法
    标签选择器 可以选出所有相同的标签,比如p 不能差异化选择 较多 p { color:red;}
    类选择器 可以选出1个或者多个标签 可以根据需求选择 非常多 .nav { color: red; }
    id选择器 一次只能选择器1个标签 只能使用一次 不推荐使用 #nav {color: red;}
    通配符选择器 选择所有的标签 选择的太多,有部分不需要 不推荐使用 * {color: red;}

    基础选择器我们一共学了4个, 每个都有自己的价值, 可能再某个地方都能用到。但是如果说,一定要找个最常用的,那么,肯定是类选择器。

    • 尽量少用通用选择器 *

    • 尽量少用 ID 选择器

    • 不使用无具体语义定义的标签选择器 div span

    3.font字体

    • 3.1:font-size:大小

    • 谷歌浏览器默认的文字大小为16px

    • 但是不同浏览器可能默认显示的字号大小不一致,我们尽量给一个明确值大小,不要默认大小。一般给body指定整个页面文字的大小

    • 3.2 :ont-family:字体

    • 作用:

      • font-family属性用于设置哪一种字体。

    p{ font-family:"微软雅黑";}
    • 3.3:font-weight:字体粗细

    • 在html中如何将字体加粗我们可以用标签来实现

      • 使用 b 和 strong 标签是文本加粗。

    属性值描述
    normal 默认值(不加粗的)
    bold 定义粗体(加粗的)
    100~900 400 等同于 normal,而 700 等同于 bold 我们重点记住这句话

    提倡:

    我们平时更喜欢用数字来表示加粗和不加粗。

    • 3.4:font-style:字体风格

    • font-style属性用于定义字体风格,如设置斜体、倾斜或正常字体,其可用属性值如下:

    • 字体倾斜除了用 i 和 em 标签,还可以使用css实现

    属性作用
    normal 默认值,浏览器会显示标准的字体样式 font-style: normal;
    italic 浏览器会显示斜体的字体样式。
    • 3.5:font:综合设置字体样式

    • font属性用于对字体样式进行综合设置

    • 基本语法格式如下

      • 选择器 { font: font-style font-weight font-size/line-height font-family;}

      • 固定顺序不能打乱,空格隔开,不需要设置的属性可以省略,font-size和font-family属性必须保留,否则该font属性不生效

    font总结

    属性表示注意点
    font-size 字号 我们通常用的单位是px 像素,一定要跟上单位
    font-family 字体 实际工作中按照团队约定来写字体
    font-weight 字体粗细 记住加粗是 700 或者 bold 不加粗 是 normal 或者 400 记住数字不要跟单位
    font-style 字体样式 记住倾斜是 italic 不倾斜 是 normal 工作中我们最常用 normal
    font 字体连写 1. 字体连写是有顺序的 不能随意换位置 2. 其中字号 和 字体 必须同时出现

    4.外观属性

    4.1:color:文本颜色

    • 作用:color属性用于定义文本的颜色,取值方式有以下三种

    表示表示属性值
    预定义的颜色值 red,green,blue ...
    十六进制 #FF0000,#FF6600,#29D794 ...
    RGB代码 rgb(255,0,0)或rgb(100%,0%,0%) ...

    4.2:text-align:文本水平对齐方式

    • 作用:text-align属性用于设置让盒子里面的文本内容水平居中

    属性解释
    left 左对齐(默认值)
    right 右对齐
    center 居中对齐

    4.3:line-height:行间距

    • 作用:行与行之间的距离,即字符的垂直间距,一般称为行高。

    • 一般情况下,行距比字号大7.8像素左右就可以了。

      • 默认字体大小16px,line-height: 24px;

    4.4:text-indent:首行缩进

    • 作用:text-indent属性用于设置首行文本的缩进

    • 建议:

      • 建议使用em作为设置单位。

      • 如果是汉字的段落, 1em 就是一个汉字的宽度:text-indent: 2em;

    4.5:text-decoration 文本的装饰

    • 作用:text-decoration 通常我们用于给链接修改装饰效果

    描述
    none 默认。定义标准的文本。 取消下划线(最常用)
    underline 定义文本下的一条线。下划线 也是我们链接自带的(常用)
    overline 定义文本上的一条线。(不用)
    line-through 定义穿过文本下的一条线。(不常用)

    5. CSS复合选择器

    5.1:后代选择器

    • 作用:更能锁定一个元素,比如:.className h3 {color:orange}

    • 外层标签写在前面,内层标签写在后面,中间用空格分隔

      • 父级 子级{属性:属性值;属性:属性值;}

    5.2:子元素选择器

    • 作用:子元素选择器只能选择作为某元素子元素(亲儿子)的元素。

    • 把父级标签写在前面,子级标签写在后面,中间跟一个 > 进行连接

      • .className>h3{color:red;}

    5.3:交集选择器(不怎么使用)

    • 由两个选择器构成,找到的标签必须同时匹配两个选择器

    • 第一个为标签选择器,第二个为class选择器,两个选择器之间不能有空格,如div.className{color:orange}

    5.4:并集选择器(常用)

    • 作用:实现一个样式,在多处使用

    • 任何形式的选择器,都可以作为并集选择器的一部分,逗号隔开

      • .className,#id,p {color:orange}

    5.5:链接伪类选择器

    • 作用:用于向某些选择器添加特殊的效果。比如给链接添加特殊效果

    • 当要同时使用多个的时候,建议顺序按照下面得来,有坑

      • a:link /* 未访问的链接 */

      • a:visited /* 已访问的链接 */

      • a:hover /* 鼠标移动到链接上 ,这个用得多*/

      • a:active /* 选定的链接 */

    6.标签显示模式

    • HTML标签一般分为块标签和行内标签两种类型,它们也称块元素和行内元素。典型代表分别就是div和span

    6.1:块级元素的特点(div)

    1. 独自占用一行

    2. 高度,宽度、外边距以及内边距都可以控制

    3. 宽度默认是容器(父级宽度)的100%(没有指定,则撑不开)

    4. 是一个容器及盒子,里面可以放行内或者块级元素。

    • 注意

      • 文字类块级标签里面不能放其他块级元素。比如p和h1~h6、dt

    5.2:行内元素的特点(span)

    1. 相邻行内元素在一行上,一行可以显示多个。

    2. 高、宽直接设置是无效的。

    3. 默认宽度就是它本身内容的宽度。

    4. 行内元素只能容纳文本或则其他行内元素。

    • 注意

      • 特殊情况a里面可以放块级元素,但是给a转换一下块级模式最安全。

    5.3:行内快元素

    1. 和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。一行可以显示多个

    2. 默认宽度就是它本身内容的宽度。

    3. 高度,行高、外边距以及内边距都可以控制。

    • 注意

      • <img /><input /><td>,是三个行内元素,有些资料说明为:行内快元素

    6.4:三种模式转换和总结

    • 块转行内:display:inline;

    • 行内转块:display:block;

    • 块、行内元素转换为行内块: display: inline-block;

    元素模式元素排列设置样式默认宽度包含
    块级元素 一行只能放一个块级元素 可以设置宽度高度 容器的100% 容器级可以包含任何标签
    行内元素 一行可以放多个行内元素 不可以直接设置宽度高度 它本身内容的宽度 容纳文本或则其他行内元素
    行内块元素 一行放多个行内块元素 可以设置宽度和高度 它本身内容的宽度  

    7.行高

    • 何谓行高?

    • 所以行高 = (1~2) + (7~9+ 4~5) + 5~6

      • 也就是上距离 + 内容高度 + 下距离

    7.1:单行文本垂直居中

    • 文字的行高等于盒子的高度,可以实现:单行文本在盒子中垂直居中对齐。

    • 如果行高大于高度 文字会偏下 。

    • 如果行高小于高度 文字会偏上 。

    8.background(背景)

    8.1:背景颜色(color)

    • 默认的值是 transparent 透明的

    8.2:背景图片(image )

    • background-image : url(images/test1.png);

    参数作用
    none 无背景图(默认的)
    url 使用绝对或相对地址指定背景图像

    8.3:背景平铺:repeat

    • background-repeat : repeat | no-repeat | repeat-x | repeat-y

    参数作用
    repeat 背景图像在纵向和横向上平铺(默认的)
    no-repeat 背景图像不平铺
    repeat-x 背景图像在横向上平铺
    repeat-y 背景图像在纵向平铺

    8.4:背景位置:position

    • background-position : length || length

    • background-position : position || position

    参数
    length 百分数 | 由浮点数字和单位标识符组成的长度值
    position top | center | bottom | left | center | right 方位名词
    • 注意:

      • 必须先指定background-image属性

      • position 后面是x坐标和y坐标。 可以使用方位名词或者 精确单位。

      • 如果指定两个值,两个值都是方位名字,则两个值前后顺序无关,比如left top和top left效果一致

      • 如果只指定了一个方位名词,另一个值默认居中对齐。

      • 如果position 后面是精确坐标, 那么第一个,肯定是 x 第二的一定是y

      • 如果只指定一个数值,那该数值一定是x坐标,另一个默认垂直居中

      • 如果指定的两个值是 精确单位和方位名字混合使用,则第一个值是x坐标,第二个值是y坐标

    8.5:背景附着(attachment)

    • 这个名词不是很见名知意:设置背景是滚动的还是固定的

    • background-attachment : scroll | fixed

    参数作用
    scroll 背景图像是随对象内容滚动
    fixed 背景图像固定

    8.6:背景简写

    • background:属性的值的书写顺序官方并没有强制标准的,建议依照下面书写

    • background: 背景颜色 背景图片地址 背景平铺 背景滚动 背景位置;

    • 语法:

    background: orange url(image.jpg) repeat-y  scroll center top ;

    8.7:背景透明(Css3)

    • 语法:

    background: rgba(0, 0, 0, 0.3);
    • 最后一个参数是alpha 透明度 取值范围 0~1之间

    • 我们习惯把0.3 的 0 省略掉 这样写 background: rgba(0, 0, 0, .3);

    • 注意: 背景半透明是指盒子背景半透明, 盒子里面的内容不受影响

    • 因为是CSS3 ,所以 低于 ie9 的版本是不支持的。

    9.CSS三大特性

    9.1:CSS层叠性

    • 当多个样式对同一元素设置时,后面的样式覆盖前面的样式

    • CSS层叠性: 长江后浪推前浪,前浪死在沙滩上

    9.2:CSS继承性

    • 子标签会继承父标签的某些样式,如文本颜色和字号。

    • text-,font-,line-这些元素开头、以及color属性可以继承

    9.3:CSS优先级

    • 这个就得说说了,有时候我们设置某个元素的样式,但却没有生效的原因就在这

    • 因为我们使用的选择器的权重低于另一个选择器的权重,就无法产生覆盖

    • 每个选择器的权重如下:

    标签选择器计算权重公式
    继承或者 * (这个得特别注意一下 0,0,0,0
    每个元素(标签选择器) 0,0,0,1
    每个类,伪类 0,0,1,0
    每个ID 0,1,0,0
    每个行内样式 style="" 1,0,0,0
    每个!important 重要的 ∞ 无穷大
    • 有多个基础选择器组合而成时,权重加法个位对个位,十位对十位,五进制一说

    • 十位的一个1 大于个位的999+,哈哈哈哈哈,比如(0,0,1,0) > (0,0,0,11)

    10.CSS重点之一:盒子模型

    • 盒子模型有元素的内容、边框(border)、内边距(padding)、和外边距(margin)组成。

      • 盒子的厚度 我们成为 盒子的边框 (border)

      • 盒子内容与边框的距离是内边距

      • 盒子与盒子之间的距离是外边距

    10.1:盒子边框(border)

    • border : border-width || border-style || border-color

    • border : 1px solid orange;

    属性作用
    border-width 定义边框粗细,单位是px
    border-style solid(实线)、dashed(虚线)、dotted(点线)
    border-color 边框颜色

    盒子边框写法总结表

    很多时候,我们是可以单独给4个边框分别指定的。

    上边框下边框左边框右边框
    border-top-style:样式; border-bottom-style:样式; border-left-style:样式; border-right-style:样式;
    border-top-宽度; border- bottom-宽度; border-left-宽度; border-right-宽度;
    border-top-color:颜色; border- bottom-color:颜色; border-left-color:颜色; border-right-color:颜色;
    border-top:宽度 样式 颜色; border-bottom:宽度 样式 颜色; border-left:宽度 样式 颜色; border-right:宽度 样式 颜色;

    表格的细线边框

    • 通过表格的cellspacing="0",将单元格与单元格之间的距离设置为0

    • 但是两个单元格之间的边框会出现重叠,从而使边框变粗

      • table{ border-collapse:collapse; } //表示相邻边框合并在一起。

    圆角边框

    • border-radius:length;  /* 可以是数值也可以是百分比 */
      border-radius: 50%;    /* 实现正方形变圆圈 */

    盒子阴影

    • box-shadow:水平阴影 垂直阴影 模糊距离(虚实) 阴影尺寸(影子大小) 阴影颜色 内/外阴影;

      

    • 前两个属性是必须写的。其余的可以省略。

    • 外阴影 (outset) 是默认的 但是不能写 想要内阴影可以写 inset

    • box-shadow: 5px 5px 3px 4px rgba(0, 0, 0, .4);
      box-shadow: 0 15px 30px  rgba(0, 0, 0, .4);

    10.2:内边距(padding)

    属性作用
    padding-left 左内边距
    padding-right 右内边距
    padding-top 上内边距
    padding-bottom 下内边距
    • 内边距就是边框与内容之间的距离,内容大小是不是变的,所以,当我们指定了高宽后,再指定内边距,当内边距增大时,盒子也会随着增大,如果不想盒子变大,控制盒子高宽减小对应的值即可,如果我们没有知道高宽,使用内边距也不会撑开盒子

    • 看到这里,我们就应该知道一个:盒子的高和宽 = 文本高/宽 + 内边距 + 边框

    • 内边距简写

    值的个数表达意思
    1个值 padding:上下左右内边距;
    2个值 padding: 上下内边距 左右内边距 ;
    3个值 padding:上内边距 左右内边距 下内边距;
    4个值 padding: 上内边距 右内边距 下内边距 左内边距 ;

    10.2:外边距(margin)

    • margin就是控制盒子和盒子之间的距离

    属性作用
    margin-left 左外边距
    margin-right 右外边距
    margin-top 上外边距
    margin-bottom 下外边距
    • margin值的简写 (复合写法)跟 padding 完全相同。

    块级盒子水平居中

    • 盒子必须指定了宽度(width)

    • 然后就给左右的外边距都设置为auto

    text-align: center; /* 文字,行内元素 行内块元素水平居中 */
    margin: 10px auto;  /* 块级盒子水平居中  左右margin 改为 auto 即可 */

    10.3:其他相关

    • 清除元素默认的内外编剧

      • * {
           padding:0;         /* 清除内边距 */
           margin:0;          /* 清除外边距 */
        }
    • 注意:行内元素为了照顾兼容性, 尽量只设置左右内外边距, 不要设置上下内外边距。

    • 外边距合并

    • 使用margin定义块元素垂直外边距时,可能会出现外边距的合并,也叫外边距塌陷

    • 场景就是两个块级盒子,上面的设置了下边距,下面的设置了上边距,但是两个盒子之间的距离并不是两个外边距的和,而是两个外边距中的最大值(外边距塌陷)

    • 解决方式:

      • 尽量只给一个盒子设置外边距

    • 嵌套块元素垂直外边距的合并

    • (前提):对于两个嵌套关系的块元素,如果父元素没有上内边距及边框

    • (问题):父元素的上外边距会与子元素的上外边距发生合并

    • (结果):合并后的外边距为两者中的较大者

    • (解决方案):

      • 可以为父元素定义上边框。

      • 可以为父元素定义上内边距

      • 可以为父元素添加overflow:hidden。

      • 还有其他方法,比如浮动、固定、绝对定位的盒子不会有问题

    11.CSS布局的三种方式

    11.1:普通流 (标准流)

    • 块级元素会独占一行,从上向下顺序排列;

      • 常用元素:div、hr、p、h1~h6、ul、ol、dl、form、table

    • 行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行;

      • 常用元素:span、a、i、em等

    11.2:浮动(float)

    • 让盒子从普通流中起来,主要作用让多个块级盒子一行显示

      • 转成行块的话,会有两个问题

        1. 块级元素是一行显示了,但是中间有缝隙

        2. 不能精准控制每个块级元素的位置,比如左右对齐

    • 语法 : 选择器 { float: 属性值; }

      属性值描述
      none 元素不浮动(默认值
      left 元素向浮动
      right 元素向浮动
    • 浮动的特点

      1. 漂浮在普通流的上面。 脱离标准流,不占位置,俗称 “脱标”

      2. float属性会改变元素display属性

        • 任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。 生成的块级框和我们前面的行内块极其相似,只是元素之间没有空白缝隙。

        • 浮动的元素互相贴靠一起的,但是如果父级宽度装不下这些浮动的盒子, 多出的盒子会另起一行对齐

    • 浮动的运用

    浮动和标准流的父盒子搭配

    • 我们知道,浮动是脱标的,会影响下面的标准流元素,此时,我们需要给浮动的元素添加一个标准流的父亲,这样,最大化的减小了对其他标准流的影响。

    浮动元素与父盒子的关系

    • 子盒子的浮动参照父盒子对齐

    • 不会与父盒子的边框重叠,也不会超过父盒子的内边距

    浮动元素与兄弟盒子的关系

    • 在一个父级盒子中,如果前一个兄弟盒子是:

      • 浮动的,那么当前盒子会与前一个盒子的顶部对齐;

      • 普通流的,那么当前盒子会显示在前一个兄弟盒子的下方。

      • 建议:

        • 如果一个盒子里面有多个子盒子,如果其中一个盒子浮动了,其他兄弟也应该浮动。防止引起问题

    清除浮动

    • (浮动带来问题) :父级盒子很多情况下,不方便给高度,但是子盒子浮动就不占有位置,最后父级盒子高度为0,就影响了下面的标准流盒子。

    • (清除浮动的本质):清除浮动主要为了解决父级元素因为子级浮动引起内部高度为0 的问题。清除浮动之后, 父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了

    • (清除浮动的几种方法):

      1. 选择器{clear:属性值;}    //一般我们只使用:both
        
        | 属性值 | 描述                                       |
        | ------ | ------------------------------------------|
        | left   | 不允许左侧有浮动元素(清除左侧浮动的影响)  |
        | right  | 不允许右侧有浮动元素(清除右侧浮动的影响)  |
        | both   | 同时清除左右两侧浮动的影响()             |
      2. 是W3C推荐的做法是通过在浮动元素末尾添加一个空的标签例如
        <div style="clear:both"></div>
        /*这个缺点也很明显:会添加许多没意义的标签*/
      3. 可以给父级添加: overflow为 hidden| auto| scroll  都可以
        /*这个缺点也很明显:当内容增多时不会自动换行而是隐藏掉*/
      4. 使用after伪元素清除浮动

         .clearfix:after {  content: ""; display: block; height: 0; clear: both; visibility: hidden;  }   
         .clearfix {*zoom: 1;}   /* IE6、7 专有 */
        /* 代表网站:百度,网易,淘宝 */
      5. 使用双伪元素清除浮动

        .clearfix:before,.clearfix:after { 
          content:"";
          display:table; 
        }
        .clearfix:after {
         clear:both;
        }
        .clearfix {
          *zoom:1;
        }
        /*代表网站 : 小米、腾讯*/

    11.3:定位(position)

    • 将盒子在浏览器的某一个置,由的漂浮在其他盒子的上面

      • 标准流元素 (最下面) --> 浮动元素 --> 定位元素 (最上面)

    • 定位 = 定位模式 + 边偏移

      • 定位模式:就是一种模式,各有各得特点,下面祥说

      • 边偏移:我们定位的盒子,是通过边偏移来移动位置的

    边偏移

    边偏移属性示例描述
    top top: 80px 顶端偏移量,定义元素相对于其父元素上边线的距离
    bottom bottom: 80px 底部偏移量,定义元素相对于其父元素下边线的距离
    left left: 80px 左侧偏移量,定义元素相对于其父元素左边线的距离
    right right: 80px 右侧偏移量,定义元素相对于其父元素右边线的距离

    定位模式

    • 语法 : 选择器 { position: 属性值; }

    语义
    relative 相对定位
    static 静态定位
    absolute 绝对定位
    fixed 固定定位

    11.3.1:静态定位

    • 就是默认的定位方式,就是不需要定位,相当于none,不做说明

    11.3.2:相对定位

    • 相对定位是元素相对于它原本在标准流中的位置来偏移。

    • 原来在标准流的区域继续占有,后面的盒子仍然以标准流的方式对待它

    11.3.3:绝对定位

    • 绝对定位是元素以带有定位的父级元素来移动位置

    • 父元素没有定位,则以浏览器为准定位

      • 这里一般我们会将父元素设置为相对定位,因为相对定位既有定位,且还占用标准流的空间,不会影响其他的标准流的盒子布局(子绝父相)

    • 完全脱标 —— 完全不占位置;

    11.3.4:固定定位

    • 固定定位绝对定位的一种特殊形式

    • 完全脱标 —— 完全不占位置;

    • 只认浏览器的可视窗口 —— 浏览器可视窗口 + 边偏移属性 来设置元素的位置;

      • 跟父元素没有任何关系;单独使用的

      • 不随滚动条滚动。

    11.3.5:定位的运用

    • 绝对定位的盒子居中
    • 注意:绝对定位/固定定位的盒子不能通过设置 margin: auto 设置水平居中

    • 实现方式:

      1. left: 50%;:让盒子的左侧移动到父级元素的水平中心位置

      2. margin-left: -100px;:让盒子向左移动自身宽度的一半

    • 堆叠顺序(z-index)
    • 在使用定位布局时,可能会出现盒子重叠的情况

    • 加了定位的盒子,默认后来者居上, 后面的盒子会压住前面的盒子。

    • 应用 z-index 层叠等级属性可以调整盒子的堆叠顺序,数值越大,越靠上

    • z-index 只能应用于相对定位绝对定位固定定位的元素

    • 定位改变display属性

    display是 显示模式, 可以改变显示模式有以下方式:

    • 可以用inline-block 转换为行内块

    • 可以用浮动 float 默认转换为行内块(类似,并不完全一样,因为浮动是脱标的)

    • 绝对定位和固定定位也和浮动类似, 默认转换的特性 转换为行内块。

    所以说, 一个行内的盒子,如果加了浮动固定定位绝对定位,不用转换,就可以给这个盒子直接设置宽度和高度等。

    • 浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题。

    12.CSS使用技巧

    12.1.元素的隐藏与显示

    • display 显示

    display: none 隐藏对象
    
    display:block 除了转换为块级元素之外,同时还有显示元素的意思。
    • 且隐藏之后,不再保留位置。

    • 实际开发场景:

      • 配合js,鼠标经过,显示下拉菜单

    • overflow 溢出

    • 设置当对象的内容超过其指定高度及宽度时如何管理内容

    属性值描述
    visible 不剪切内容也不添加滚动条
    hidden 不显示超过对象尺寸的内容,超出的部分隐藏掉
    scroll 不管超出内容否,总是显示滚动条
    auto 超出自动显示滚动条,不超出不显示滚动条
    • 实际开发场景

      1. 清除浮动

      2. 隐藏超出内容,不允许内容超出父级盒子

    12.2.CSS用户界面样式

    • 鼠标样式:cursor

      • 设置在对象上移动的鼠标指针采用何种系统预定义的光标形状

      • <li style="cursor:pointer">我是小手</li>
    属性值描述
    default 小白 默认
    pointer 小手
    move 移动
    text 文本
    not-allowed 禁止
    • 轮廓线 : outline

      • 是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用

      • 比如输入框的边框都是有的,一般我们会把他去掉

      • <input  type="text"  style="outline: 0;"/>
    • 防止拖拽文本域 : resize

      • 实际开发中,我们文本域右下角是不可以拖拽的

      • <textarea  style="resize: none;"></textarea>

    12.3.垂直对齐

    • 垂直对齐:vertical-align

      • 有宽度的块级元素水平居中对齐,是margin: 0 auto;

      • 让文字水平居中对齐,是 text-align: center;

      • vertical-align 垂直居中对齐,它只针对于行内元素或者行内块元素,不影响块级元素中的内容对齐, 通常用来控制图片/表单与文字的对齐

      • vertical-align : baseline |top |middle |bottom 
        /* baseline :图片和文字实现基线对齐*/
        /* top      :图片和文字实现顶部对齐*/
        /* middle   :图片和文字实现垂直居中对齐*/
        /* bottom   :图片和文字实现底部对齐*/
    • 去除图片低侧的空白缝隙

    • 图片或者表单等行内块元素,他的底线会和父级盒子的基线对齐。

    • 然后基线和底线之间的缝隙就会留白,看起来局势个白色的缝隙

    • 解决方案:

      1. 改变vertical-align,不为基线对齐

      2. 给img 添加 display:block; 转换为块级元素就不会存在问题了。

    12.4.溢出的文字省略号显示

    • white-space:设置对象内文本显示方式,可以设置强制一行显示内容

    • white-space:normal ;默认处理方式
      white-space:nowrap ;强制在同一行内显示,直到文本结束或遇到br才换行。
    • text-overflow:设置是否使用一个省略标记(...)标示对象内文本的溢出

    • text-overflow : clip ;不显示省略标记(...),而是简单的裁切 
      text-overflow:ellipsis ; 当文本溢出时显示省略标记(...)
    • 上面两个配合实现则可实现溢出的文字省略号显示

      1. 先强制一行显示 :white-space:nowrap;

      2. 超出的本文隐藏 :overflow: hidden;

      3. 设置溢出的用...代替 :text-overflow:ellipsis;

    .

  • 相关阅读:
    ansible
    爬虫框架之scrapy
    Mongodb
    xml 创建 添加节点或属性(自定义,复制)
    web站点崩溃的原因总结
    C# 关闭正在执行的文件
    254. Factor Combinations
    256. Paint House
    156. Binary Tree Upside Down
    170. Two Sum III
  • 原文地址:https://www.cnblogs.com/msi-chen/p/10195844.html
Copyright © 2011-2022 走看看