zoukankan      html  css  js  c++  java
  • web开发: css高级与盒模型

    本文目录:

    一、组合选择器

    二、复制选择器优先级

    三、伪类选择器

    四、盒模型

    五、盒模型显示区域

    六、盒模型布局

    一、组合选择器

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>组合选择器</title>
        <style type="text/css">
            /*群组选择器: 同时可以控制多个选择器*/
            /*#dd, div, #a {
    
            }*/
            /*.d { 起相同类名
                color: red;
            }*/
            /*语法: 逗号分隔,控着多个*/
            .d1, .d2, .d3 {
                color: orange
            }
    
            /*子代(后代)选择器: 根据父子结构控着目标子标签*/
            /*明确选择器书写顺序: 目标inner, 再确定修饰词(哪个父亲,多少个父亲)*/
            /*语法: 子代 >连接 */
            .sub > .inner {
                color: tan
            }
            /*语法: 后代 空格连接*/
            .sup .inner {
                color: cyan
            }
            .sup .sub > .inner {
                color: red
            }
    
            /*相邻(兄弟)选择器: 根据兄弟结构控制下方兄弟标签*/
            /*明确目标 => 添加修饰词*/
            /*语法: 相邻 +连结*/
            .ele2 + .ele3 {
                color: blue
            }
            /*语法: 兄弟 ~连接*/
            .ele1 ~ .ele3 {
                color: yellow
            }
    
    
            /*交集选择器: 一个标签有多种选择器修饰,通过多种修饰找到一个目标标签*/
            section#s.ss {
                color: green
            }
    
            /*注: 每一个选择器位均可以为三个基础选择器中任意一个*/
        </style>
    </head>
    <body>
        <!-- <div class="d1" id="dd"></div> -->
        <!-- .d${$$$}*3 -->
        <div class="d d1">001</div>
        <div class="d d2">002</div>
        <div class="d d3">003</div>
        
        <!-- .sup>.sub>.inner -->
        <div class="sup">
            <div class="sub">
                <div class="inner">inner</div>
            </div>
        </div>
    
        <!-- .ele${e$}*3 -->
        <div class="ele1">e1</div>
        <div class="ele2">e2</div>
        <div class="ele3">e3</div>
    
        <!-- (section.ss#s{块区域}+section.ss{块区域}+.ss{块区域}) -->
        <section class="ss" id="s">块区域</section>
        <section class="ss">块区域</section>
        <div class="ss">块区域</div>
    
    </body>
    </html>

     

    二、复制选择器优先级

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style type="text/css">
            /*两个类名的选择器 > 一个类名的选择器, 与位置无关*/
            .d4 .d5 {
                font-size: 40px;
            }
    
            .d5 {
                font-size: 20px;
            }
            /*了解: 属性选择器*/
            [aa*="b"] {
                font-size: 30px;
            }
            
            /*每个选择器位也可以替换为一个组合选择器*/
            body > .d1 .d3 .d5 {
                font-size: 50px;
            }
            /*.d1 div .d3 .d5 优先级等于 body > .d1 .d3 .d5, 谁在下谁起作用*/
            .d1 div .d3 .d5 {
                font-size: 100px;
            }
    
            #div {
                font-size: 200px;
            }
        </style>
    </head>
    <body>
        <!-- 优先级取决于 权重, 其实就是比较个数 -->
        <!-- 1.不同的修饰符(后代/兄弟/交集...)均不影响权重 -->
        <!-- 2.选择器的位置也不会影响权重 -->
        <!-- 3.权重只和个数有关 -->
        <!-- 4.id的权重无限大于class无限大于标签 -->
        <!-- 5.属性选择器的权重与类一样 -->
    
        <!-- 复习: 优先级来源(操作的是同一标签同一属性) -->
        <div class="d1">
            <div class="d2">
                <div class="d3">
                    <div class="d4">
                        <div class="d5" aa="aba" id='div'>12345</div>
                        <div class="d5" aa="AAb">67890</div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>

     

    三、伪类选择器

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>伪类选择器</title>
        <style type="text/css">
            /*a标签的四大伪类*/
            /*操作的是a,伪类是修饰词,不影响优先级*/
            /*链接的初始状态(未被访问过)*/
            a:link {
                color: green
            }
            /*链接被鼠标悬浮*/
            a:hover {
                color: yellow;
                /*鼠标样式*/
                cursor: pointer;
            }
            /*链接处于激活状态(鼠标按下)*/
            a:active {
                color: red;
            }
            /*链接已被访问过*/
            a:visited {
                color: #ccc
            }
            
            /*设置初始状态*/
            .box {
                width: 200px;
                height: 200px;
                background-color: red
            }
            /*再确定第二状态*/
            .box:hover {
                background-color: yellowgreen;
                cursor: pointer;
            }
            .box:active {
                background-color: greenyellow
            }
        </style>
    
        <style type="text/css">
            section {
                width: 100px;
                height: 100px;
                background-color: orange
            }
    
            /*同一结构下的第几个: 先确定位置再匹配类型*/
            section:nth-child(3), section:nth-child(5) {
                background-color: green
            }
    
            /*同一结构下的某选择器的第几个: 先确定类型再匹配位置*/
            section:nth-of-type(1), section:nth-of-type(3) {
                background-color: cyan
            }
            
            /*取反*/
            section:not(:nth-of-type(2)) {
                background-color: pink
            }
        </style>
    </head>
    <body>
        <!-- 该同一结构: a div section*3 div -->
        <a href="https://www.baidu.com">前往你的家</a>
        <!-- 普通标签均可以使用 :hover :active -->
        <div class="box"></div>
    
        <section></section>
        <section class="ss"></section>
        <section></section>
    
        <div>
            <!-- 该同一结构: a i b -->
            <a href="">123</a>
            <i></i>
            <b></b>
        </div>
    
    </body>
    </html>

     

    四、盒模型

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>盒模型</title>
        <style type="text/css">
            /*content=width x height, 颜色由背景色填充, 参与盒子显示*/
            .box {
                width: 100px;
                height: 100px;
                background-color: orange
            }
            /*padding, 颜色由背景色填充, 参与盒子显示*/
            .box {
                padding: 20px;
            }
            /*border, 颜色由自身规定, 参与盒子显示*/
            .box {
                /*transparent 透明*/
                border: 10px solid black;
            }
            /*margin, 没有颜色, 不参与盒子显示, 决定盒子布局(位置信息)*/
            .box {
                margin: 200px;
            }
        </style>
    </head>
    <body>
        <!-- 什么是盒模型: 通配选择器可以控制的页面标签都是盒模型(一般我们操作的是块级标签) -->
        <!-- 为什么要学盒模型: 页面书写的标签初始状态级别都不能满足显示要求,需要再次修改,修改的就是盒模型的各个属性 -->
        <!-- 盒模型组成部分: margin(外边距) + boder(边框) + padding(内边距) + content(内容) -->
        <!-- 注意点: 1.四部分均具有自身独立区域 2.content=width x height,是子标签或子内容的显示区域  -->
    
        <div class="box">123</div>
    </body>
    </html>

     

    五、盒模型显示区域

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>盒模型显示区域</title>
        <style type="text/css">
            .box {
                width: 200px;
                height: 200px;
                background-color: orange;
            }
            .inner {
                width: 50px;
                height: 50px;
                background-color: red;
            }
            
            /*padding*/
            /*1.第一个方位为上, 顺时针确定赋值顺序 => 上右下左*/
            /*2.少于四个值, 赋值依旧遵循规则1, 无值方位找对边*/
            /*3.一个值时, 控制上下左右*/
            .box {
                /*padding: 10px 20px 30px 40px;*/
                /*padding: 10px 20px;*/
                
                /*将子内容往内挤*/
                padding-top: 75px; 
                padding-left: 75px;
                /*还有保证自身显示区域不变 => 手动缩小content*/
                /*calc()做css运算, 需要带上单位*/
                height: calc(200px - 75px);
                width: calc(200px - 75px);
    
            }
            /*box控制位置, inner控制内容*/
            .inner {
                text-align: center;
                line-height: 50px;
            }
    
            /*border: 颜色 宽度 样式 (顺序随意)*/
            .box {
                /*solid dashed*/
                border-style: inset;
                border-color: blue;
                border-width: 50px;
    
                /*整体赋值*/
                border: 30px solid #af3;
    
                /*有些标签默认有边框,如何清除边框*/
                /*border: 0;*/
                border: none;
            }
            .jh {
                /*利用盒模型形成三角形*/
                /*将其他边颜色设置为透明色(transparent)*/
                border-top: 50px solid red;
                /*border-right: 50px solid orange;*/
                border-bottom: 50px solid pink;
                border-left: 50px solid blue;
                width: 0;
                height: 0;
            }
        </style>
    </head>
    <body>
        <!-- content + padding + border -->
        <div class="box">
            <div class="inner">1</div>
        </div>
    
        <div class="jh"></div>
    </body>
    </html>

     

    六、盒模型布局

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>盒模型布局</title>
        <style type="text/css">
            /*body默认有margin:8px, 做项目时一定会清除*/
            /*清除系统默认(不喜欢的)样式,该操作称之为 reset 操作*/
            body {
                margin: 0;
            }
            /*a标签的reset操作*/
            a {
                color: black;
                text-decoration: none;
            }
            /*h1标签的reset操作*/
            h1 {
                margin: 0;
            }
    
            /*block盒子, 宽度自适应父级, 高度由子级撑开*/
            .box {
                width: 100px;
                height: 100px;
                background-color: orange;
            }
            .b1 {
                /*margin: 50px;*/
                margin-top: 50px;
                margin-left: 50px;
            }
            /*只有margin-left|top用于完成自身布局*/
            .b2 {
                /*水平居中: 在所在父级水平居中*/
                /*auto自适应剩余空白区域*/
                /*margin-left: auto;*/
                /*margin-right: auto;*/
    
                /*实现居右50px*/
                margin-left: auto;
                margin-right: 50px;
    
                /*b2上移与b1并排*/
                margin-top: -100px;
            }
            
        </style>
        <style type="text/css">
            .up, .down {
                width: 100px;
                height: 100px;
                background-color: red;
                /*display: inline-block;*/
            }
            /*margin-right|bottom影响兄弟布局*/
            .up {
                /*bottom会影响之下的兄弟, 往下挤*/
                /*margin-bottom: 30px;*/
                /*right会影响右方的兄弟, 往右挤*/
                /*margin-right: 30px;*/
    
                margin-bottom: 30px;
            }
            .down {
                /*上下兄弟的距离取大值 => margin-top的坑*/
                margin-top: 30px;
            }
        </style>
        <style type="text/css">
            .sup {
                width: 200px;
                height: 200px;
                background-color: pink;
                margin-top: 50px;
            }
            .sub {
                /*父子top取大值 => margin-top的坑(父级只与第一个子级联动)*/
                width: 100px;
                height: 100px;
                background-color: brown;
                margin-top: 50px;
            }
            /*拆散父子(第一个子)*/
            /*1.设置父级的border-top即可*/
            /*2.或者设置父级的padding-top即可*/
        </style>
    </head>
    <body>
        <!-- <a href="">123</a> -->
        <!-- <h1>123</h1> -->
        <div class="box b1"></div>
        <div class="box b2"></div>
    
        
        <div class="up"></div>
        <div class="down"></div>
    
        <div class="sup">
            <div class="sub"></div>
        </div>
    </body>
    </html>
  • 相关阅读:
    OSI 与 TCP/IP协议簇
    交换机工作原理
    Windows搭建域环境
    网络安全散装笔记
    Python之正则匹配——RE模块
    Django框架之ORM数据库操作
    Django中ORM的优化
    python遍历文件夹下文件
    numpy.r_ c_
    python调用google map api
  • 原文地址:https://www.cnblogs.com/wuzhengzheng/p/10273520.html
Copyright © 2011-2022 走看看