zoukankan      html  css  js  c++  java
  • HTML CSS

      #CSS样式插入方式
    当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化。有以下三种方式来插入样式表:
    外部样式表,定义在head 部分
    当样式需要被应用到很多页面的时候,外部样式表将是理想的选择。使用外部样式表,你就可以通过更改一个文件来改变整个站点的外观。

    <head>
    <link rel="stylesheet" type="text/css" href="mystyle.css">
    </head>

    内部样式表,定义在head 部分
    当单个文件需要特别样式时,就可以使用内部样式表。你可以在 head 部分通过 <style> 标签定义内部样式表。

    <head>
    <style type="text/css">
    body {background-color: red}
    h1 {color: red}
    p {margin-left: 20px}
    </style>
    </head>

    内联样式,在相关的标签中使用样式属性。
    当特殊的样式需要应用到个别元素时,就可以使用内联样式。 使用内联样式的方法是在相关的标签中使用样式属性。样式属性可以包含任何 CSS 属性。以下实例显示出如何改变段落的颜色和左外边距。

    <p style="color: red; margin-left: 20px">
    This is a paragraph
    </p>

    标签 描述
    <style> 定义样式定义。
    <link> 定义资源引用。
    <div> 定义文档中的节或区域(块级)。
    <span> 定义文档中的行内的小块或区域。

     水平居中 text-align: center

     垂直居中 line-height: 20px

      # CSS基本样式
    Tips
      格式化 alt + shift + F
      css注释 ctrl + ?

    1 color 字体颜色
    2 background-color 背景颜色
    3 font-size 文字大小
    4 px 像素 简单理解文字高度
       em 相对单位,相对父元素的字体大小像素
        没有父元素的话,依据浏览器基准字号
        user agent(ua)用户代理指浏览器
     
    5 font-size 文字粗细程度,可以取值数字,可以取值预设值(normal:400,bold:700)
     
    6 font-family 文字字体,必须用户计算机中存在中的字体才有效,可以使用多个字体以匹配 已匹配不同环境
        最后一个字体可以写 sans-serif 非衬线字体,一种字体种类,以供浏览器自主选择
     
    7 font-style 字体样式(倾斜italic,)
        i元素、em元素(强调的内容) 等默认为倾斜字体 
        weight元素(表示重要的,不能忽略的内容) 默认加粗
     
    8 text-decoration 文本修饰,下划线 中划线 上划线 
       del元素:错误的内容,在文字中间加条横线
       s元素,表示过期的内容,在文字中间加条横线

    9 text-indent 首行文本缩进

    10 line-height  行高,表示文本高度 ,xxpx,xxem 
       可以让单行文字居中
       行高可以设置为纯数字,表示相对于当前元素的字体大小

    11 width 文字宽
    12 weight 文字高
    13 letter-space 文字间隙
    14 text-align 元素内部文字水平排列方式
     

      #CSS选择器
    CSS规则 = 选择器 + 声明块
    选择器,用于选择元素
    1、 ID选择器
    2、 元素选择器
    3 、类选择器 常用

    .className{
        color:red;
    }
    
    <p class="class1 class2"> </p>

    声明块:中包含很多声明: 颜色 背景 对齐方式 字体
    css样式书写位置
      内部样式
      内联样式
      外部样式:html中用link链接样式表 <link rel="stylesheet" href="index.css">
      有利于避免多页面样式重复
      有利于浏览器缓冲,提高反映速度
      有利于分离html和css,更容易阅读和维护

    选择器
    1、简单选择器

      通配符选择器
    * 选择所有元素


      属性选择器
    根据属性名 和属性值选中元素

    [href]{
        color:red
    }
    [href="https://www.baidu.com"]{
        color:red
    }

      伪类选择器
      hover :鼠标悬停状态

    :hover{
        color:red
    }
    a:hover{
        color:red
    }

      active:鼠标状态时状态

    a:active{
        color:red
    }

      link:超链接未访问时状态(只能a元素使用)

    a:link{
        color:red
    }

      visited:超链接访问过的状态(只能a元素使用)

    a:visited{
        color:green
    }

    四类伪类选择器书写顺序
      1、link超链接未访问时状态
      2、visited超链接访问过的状态
      3、hover 鼠标悬停状态
      4、active鼠标状态时状态

      伪元素选择器:通常生产并选中某个元素内部的第一个子元素或最后一个子元素

    before
        span::befroe{
        content:"《"
    }
    after
        span::after{
        content:"》"
    }

    2、组合选择器
    1、 并且:选中p并且类名为 .class名 的

    p.class名{
        color:red
    }

    2 、后代元素 空格:选中“.class名” 后代元素中的 li元素

    .className li{
        color:red
    }

    3、 子元素 >:选中类 “.abc”的子元素“.bcd”

    .abc>.bcd{
        color:red
    }

    4 、相邻兄弟元素 + :选中元素的下个元素

    .abc{
        color:red
    }
    .abc + li{
        color:green
    }

    5 、兄弟元素 ~:后面出现的所有兄弟元素 

    .abc{
        color:red
    }
    .abc ~ li{
        color:green
    }

    6 、多个选择器,用逗号分割

    .abc, p{
        color:green
    }

    CSS选择器中逗号、空格分隔和连写的区别
      连写:就是需要同时具备才会出现效果
      逗号分隔:就是只需要具备其中之一即可出现效果,二者是并列关系
      空格分隔:就是二者是父子关系,是当前的元素子元素才会出现效果

      #层叠样式
    声明冲突:多个样式,多次应用的同一个元素
    层叠(权重计算):解决声明冲突的过程,此过程浏览器自动处理,处理过程如下:
    1、 比较重要性
    重要性从高到低
    作者样式表中的 !important 样式
    作者样式表中的普通样式
    浏览器中的默认样式
    2 、比较特殊性
    总体规则:选择器选择的范围越窄,越特殊
    具体计算规则:通过选择器计算出不同选择器的一个四位数(XXXX),再比较四位数的大小
    1 千位:如果是内联样式,记1 否则记0
    2 百位:等于选择器中所有id选择器的数量
    3 十位: 等于类选择器 属性选择器 伪类选择器的数量
    4 个位: 等于选择器中所有元素的选择器、伪元素选择器的数量

    3 、比较源次序
    代码顺序靠后的胜出

    应用
    1 重置样式表覆盖浏览器默认样式表,网络常用重置样式表 normalize.css reset.css meyer.css

      #继承
    子元素会继承父元素的某些CSS样式,通常跟文字相关的都能继承,如字体 颜色

    属性值的计算过程
    浏览器一个一个元素一次渲染,顺序按照页面文档的树形目录结构进行
    渲染每个元素的前提条件,该元素的所有CSS属性必须有值
    一个元素从所有属性都没有值,到所有的属性都有值,这个计算过程,叫做属性计算过程
    计算过程顺序;
      1 确定声明值:没有冲突的确定下来
      2 重叠冲突:根据重叠计算确定属性值
      3 使用继承:继承于父元素
      4 使用默认值:使用默认值
    特殊的两个CSS取值
      inherit:手动(强制)继承,将父元素的值取出应用到该元素
      initial:初始值,将该属性值设置为默认值

      #盒模型
    box:盒子,每个元素在页面中都会生成一个矩形区域(盒子)
    盒子类型:
    1 行盒:display等于inline的元素
    2 块盒:display等于block的元素
    行盒在页面中不换行,块盒换行

    display默认为inline
    浏览器默认样式设置的块盒:容器元素 h1-h6 p
    常见行盒 span a img video audio

    盒子的组成部分
    由内岛外分别是
    内容 content
      width height 设置的是盒子内容的宽高
    填充 padding 盒子边框到内容的距离
      padding-left pandding-right panding-top pandding-bottom
      速写panding:上 右 下 左

    填充区 + 内容盒 = 填充区

    边框 border
      边框样式border-style:solid
      边框宽度border-width
      边框颜色border-color

    如果边框样式 宽度 颜色都一样可以使用速写属性 border:4px dashed red;

    外边框 margin 边框到其他盒子的距离
      margin-left margin-right margin-top margin-bottom
      简写margin:1em 0; 代表上下都是1个距离,左右距离为0。


      #行盒的盒模型
    常见行盒盒模型:span strong em i img video a
    ## 显著特点
    1 盒子沿着内容延伸
    2 行盒不能设置宽高
    行盒宽高是依据字体大小的,不能单独调整行盒宽高,通过调整字体大小行高字体类型间接调整
    3 内边距(paddig填充区)
    水平有效 垂直方向只会影响背景 不会实际占据空间(垂直方向上内容不会随着padding 大小变化调整)
    4 边框 border
    水平有效 垂直方向只会影响背景 不会实际占据空间(垂直方向上内容不会随着padding 大小变化调整)
    5 外边框 margin
    水平有效 垂直方向只会影响背景 不会实际占据空间(垂直方向上内容不会随着padding 大小变化调整)

    ## 行块盒
    display:inline-block 的盒子,可以使行盒具有块盒的性质,包括边框等

    ## 空白折叠
    发生在行盒(行块盒)内部 或行盒(行块盒)之间
    行块盒之间有有空格,是因为空白折叠,两个行块盒之间有空格

    ## 可替换元素和非可替换元素
    大部分元素 在页面上显示的结果 取决于元素内容 称为“非可替换元素”
    少部分元素 在页面上显示的结果 取决于元素属性 称为“可替换元素”,如 img video audio
    绝大部分可替换元素为行盒
    可替换元素类似于行块盒 盒模型中所有尺寸都有效;
    object-fit:contain/fit 元素适应

      # 盒模型应用
    ## 改变宽高范围
    width height 默认设置的是内容盒,可以通过box-sizing改变
     box-sizing:border-box  宽高设置成与边框相同,改变padding-left尺寸时,边框大小不改变
    ## 改变背景覆盖范围
    默认背景覆盖边框盒
    可以通过background-clip进行修改
    background-clip:border-box/content-box/padding-box
    ## 溢出处理
    overflow控制内容溢出边框后的范围
    overflow:scrool   溢出后出现滚动条
    oveerflow可以控制X或y,两个方向是否出现滚动条,通过overflow-x或overflow-y单独控制x或y方向
    overflow:hidden 溢出隐藏
    ## 断词规则
     word-break,影像文字在什么位置背截断换行
     word-break:normal  普通,cjk文字在文字位置截断,非cjk字符单词位置截断
     word-break:all 所有文字都在文字处截断
     word-break:keep-all 都在单词处截断
    ## 空白处理
    内容盒放不下内容时,溢出部分显示为 ...
    white-space:nowap  不换行
        <style>
            li{
                border-bottom: 1px dashed #ccc;
                line-height: 2;
                border-left: 3px solid #008c8c;
                padding-left: 10px;
                margin: 1em 0;
                 200px;
                <!-- 下面三行代码只能控制单行文本溢出时显示点,多行文本需要使用js -->
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
        </style>
    

     

      # 视觉格式化模型
    盒模型:规定单个盒子的规则
    视觉格式化模型:页面中的多个盒子多个排序规则
    大体上将页面上盒子的排列分为三种方式
    常规流
    浮动
    定位

      #1常规流布局
    所有元素默认情况下都属于常规流布局

    总体规则
    块盒独占一行 行盒水平一次排列

    包含块(containing block)每个盒子都有它的包含块,包含块决定了盒子了活动排列区域
    绝大情况下盒子的包含块,为其父元素的内容

    <div class="parent">
    <p class="child">
    </p>
    </div>块盒
    1 每个块盒的总宽度,必须刚好等于包含块的宽度
    width 的默认值为 auto,auto将默认空间吸收掉
    margin 也可以设为 auto
    width 吸收能力强于margin
    当盒子定宽厚,若宽度 边框 内边距 外边距计算后 仍然有剩余空间 该剩余空间被margin-right全部吸收

    在常规流中,块盒在包含块中居中可以定宽,然后左右margin设置为auto;另外一种写法margin:0 auto;
    2 每个块盒垂直方向上的auto值
    height: auto; 适应内容的高度
    margin: auto; 表示0
    3 百分比取值
    padding 宽高 margin可以取值为百分比
    以上所有的百分比相对于包含块的宽度

    特殊情况,高度百分比
    1 包含块的高度取决于子元素的高度,设置百分比无效。(例如:父元素的高度没有设置,此时子元素多高父元素多高,此时设置百分比无效。)
    2 包含块的高度不取决于子元素的高度,设置的百分比相对于父元素的高。(例如:父元素的高度写死,此时设置的百分比相对于父元素的高。)

    4上下外边距的合并
    两个常规流块盒,上下外边距(margin)相邻,会进行合并。(两个margin取最大值)
    对于父子元素,也存在margin合并情况,如果不想合并,可以在父元素样式内设置样式将父子元素外边框不相邻,例如在父元素样式内设置padding-top:10px或border:1px solid;

      # 2浮动
    ## 应用场景
    1 文字环绕
    2 横向排列

    ## 浮动的基本特定
    修改float的属性值为:
      left:左浮动,元素靠上靠左
      right:右浮动,元素考上靠右
      默认值为none

    ## 特点
      1 当一个元素浮动后,必定为块盒(display:block)
      2 浮动元素的包含块,和常规流一样,为父元素的内容盒

    ## 盒子尺寸
      1 宽度为auto时,表示适应内容宽
      2 高度为auto时,和常规流一致,适应内容的高度
      3 margin:auto时,结果为0

    ## 盒子排列
      1 左浮动盒子靠上靠左排列
      2 右浮动盒子考上靠右排列
      3 浮动盒子在包含块中排列时,会避开常规流盒子
      4 常规流盒子在排列时,无视浮动盒子
      5 行盒在排列时,会避开浮动盒子
        注意:如果文字没有在行盒中(如文字直接在p元素内),浏览器会自动生产一个行盒包裹文字,该行盒叫匿名行盒
      6 浮动盒子不会出现外边距合并

    ## 高度坍塌
      高度坍塌的根源:常规流盒子的自动高度,在计算时,不会考虑浮动盒子
      解决方法1:在浮动盒子下方添加一个常规流盒子,使用clear css属性,清除浮动,撑开父元素高度。
      默认值 clear:none;
      清除左浮动:clear:left; 该元素必须出现在前面所有左浮动盒子的下方
      清除右浮动:clear:right; 该元素必须出现在前面所有右浮动盒子的下方
      清除左右浮动:clear:both; 该元素必须出现在前面所有浮动盒子的下方
        
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            .container{
                background: lemonchiffon;
                 1000px;
            }
            .item {
                 100px;
                height: 100px;
                background: lightblue;
                margin: 10px;
                float: left;
            }
            /* 解决高度坍塌方法1 */
            .clearfix {
                clear: both;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="item">Lorem, ipsum dolor.</div>
            <div class="item">Dignissimos, quo rem.</div>
            <div class="clearfix"></div>
        </div>
    </body>
    </html>
     
    解决高度坍塌方法2:在高度坍塌的块盒css样式中使用伪元素选择器" ::after " 并设置clear属性
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            .container{
                background: lemonchiffon;
                 1000px;
            }
            .item {
                 100px;
                height: 100px;
                background: lightblue;
                margin: 10px;
                float: left;
            }
            /* 解决高度坍塌方法2 */
            .clearfix::after {
                /* 必须设置content */
                content: ""; 
                display: block;
                clear: both;
            }
        </style>
    </head>
    <body>
        <div class="container clearfix">
            <div class="item">Lorem, ipsum dolor.</div>
            <div class="item">Dignissimos, quo rem.</div>
        </div>
    </body>
    </html>
    

      # 定位
    手动控制元素在包含块中的精准位置
    涉及css position属性
    默认值 static 静态定位即不定位
    relative相对定位
    absolute绝对定位
    fixed 固定定位
    一个元素只要position不是static 即表示是个定位元素,定位元素会脱离文档流(相对定位除外)
    一个脱离文档流的元素特定:
    1 文档流中的元素摆放时,会忽略脱离了文档流的元素
    2 文档流中元素计算自动高度时,会忽略脱离文档流的元素

    ## 相对定位 不会导致元素脱离文档流,只是让元素在原来位置上进行偏移。
    可以通过四个css属性,设置位置
    left 向左偏移量 left:50px;
    right 向右
    bottom
    top
    盒子的偏移不会对其他盒子造成任何影响

    ## absolute
    宽高为auto,适应内容
    包含块变化找祖先元素第一个定位元素,该元素的填充盒为其包含块;若找不到,则它的包含块为整个网页(初始包含块)

    ## 固定定位
    为 position:fixed;
    其他情况和绝对定位完全一样
    不同地方
    包含块不同:固定定位的包含块,固定为视口(浏览器的可视窗口)
    代码写在body任何地方都行

    ## 定位下的居中
    某个方向居中
    1 定宽或高
    2 将左右( 上下)距离设置为0
    3 将左右(上下)margin设置为auto (绝对定位和固定定位中,margin设为0,会自动吸收剩余空间)


    ## 多个定位元素重叠时(谁在前谁在后的问题)
    涉及 堆叠上下文 概念 细节太多
    简单设置方式:设置z-index,通常情况下,值越大越靠近用户
    只有定位元素设置z-index有效
    z-index可以是负数,如果是负数,如遇到常规流、浮动元素,常规流元素或浮动元素会覆盖z-index为负数的元素

    ## 补充
    绝对定位 固定定位元素一定是块盒,
    绝对定位 固定定位元素一定不是浮动,
    没有外边距合并
    相对定位不会该变盒子特征,之前是行盒还是行盒


  • 相关阅读:
    gdb调试
    go pipeline
    Go的Timer
    goconvey
    购物
    Go的可行测试
    可能会停止一段时间的更新
    一些blog
    linux全套 | Python开发平台_Ubuntu | 15
    Python基础 | 配置pip镜像源 | 01
  • 原文地址:https://www.cnblogs.com/perfectdata/p/15268372.html
Copyright © 2011-2022 走看看