zoukankan      html  css  js  c++  java
  • 前端,基础选择器,嵌套关系.display属性,盒模型

    基础选择器

    
    1.统配选择器
    控制html,body及body内跟显示相关的标签
    *{
        80px;
        height:80px;
        background-color:red;
    }
    2.类选择器
    以class起名的标签,控制class名匹配的标签
    (因为标签的class名可以重复)
    <div class="foo">123</a>
    .foo{ 80px;
        height:80px;
        background-color:pink;
        }
    3.id选择器
    以id起名的标签,控制id匹配的标签(id通过css控制是不可以重复的)
    <div class="foo" id="heh">456</div>
    #heh{80px;
        height:80px;
        background-color:yellow;
    }
    4.行间式选择器
    <div style="80px;height:80px;background-color=green;">789<div>
    

    选择器优先级

    1.行间式选择器 2.id选择器 3.类选择器 4.统配选择器
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            *{ 80px;
            height:80px;
            background-color: blue;}
            .foo{ 80px;
            height:80px;
            background-color: yellow}
            #heh{
                 80px;
                height:80px;
                background-color: green;
            }
        </style>
    </head>
    <body>
         <div style=" 80px;height: 80px;background-color: red">123</div>
         <div class="foo">456</div>
        <div id="heh">789</div>
        <div>101112</div>
    </body>
    </html>
    #总结,控制范围越精确,优先级越高,所设置的样式就会覆盖优先级低的相同属性样式
    统配<标签<class<id<行间式<!important
    *{80px;height:80px;background-color:yellow!important;}
    #important写在属性值后和;之间
    

    长度与颜色

    长度单位:px mm cm em rem vw vh in
        vw(百分比宽度,跟整个页面的宽)
        vh(百分比高度,跟整个页面的高)
    颜色:①颜色单词 red  yellow green
       	②#号十六进制数 范围(000000-FFFFFF)
        abc = aabbcc
        ③三原色rgb(0-255,0-255,0-255)
        	rgba(0-255,0-255,0-255,0-1)
            最后一个参数,透明度,1不透明,0全透明    
    

    显示方式display

    标签的分类:
    一.单双标签:
        单标签:br,hr,img,meta,link
        功能具体,不需要内容,设置为单标签,单标签结束符在标签尾部,可以省略
        主功能
    	双标签:h1,span,p,div
            具有子标签,包含内容,设置为双标签,双标签首尾分离
         主内容
        
     二.通过display属性值进行划分
    inline block inline-block
    ①inline :同行显示,支持部分css样式(不支持宽高),宽高由文本内容撑开
    ②block:异行显示,支持所有css样式,设置了宽高就采用设置的值,宽高由默认的特性
    ③inline-block:同行显示,支持所有css样式,设置了宽高就采用设置的值
    inline-block 是以文本内容作为对齐标准的,要更改对齐标准,需要使用属性vertical(垂直)-align(对齐)
    四种属性值baseline(文本底端对齐 默认值)
    top:标签顶端对齐 middle:标签中线对齐
    bottom:标签底端对齐
    
    总结:带有inline的会同行显示,带有block的支持所有css样式
        带有inline的与内容相关,默认对齐标准以内容为准
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            span{
                80px;
                height:80px;
                background-color: red;
            }
            div{
                80px;
                height:80px;
                background-color: yellow;
                display: inline-block;
                vertical-align: top;
            }
            img {
                80px;
            }
        </style>
    </head>
    <body>
    <span>123456</span>
    <span>123456</span>
    <div>123456</div>
    <div>123456</div>
    <img src="http://img4.imgtn.bdimg.com/it/u=3335258443,1321329535&fm=11&gp=0.jpg">
    <img src="http://img4.imgtn.bdimg.com/it/u=3335258443,1321329535&fm=11&gp=0.jpg">
    </body>
    </html>  
    

    嵌套关系

    页面就是由标签一层层嵌套关系形成
    嵌套关系有一定的规则:
    1.inline类型只嵌套inline类型的标签
    理解:inline就是同行显示,目前的标签<span></span>是同行显示,不常用,而且也不会嵌套标签在其内部
    2.inline-block类型,不建议嵌套任意标签,所以系统的inline-block都设计成了单标签(默认宽高)
    理解:单标签,我们学了meta,img,link等都是Inline-block类型,都是单标签,自然不会再嵌套标签在其内部
    3.block类型可以嵌套任意类型标签(hn,p一般只嵌套inline标签)
    最常用的div就是block类型,支持所有css样式,可以嵌套任意类型
    
    如何让div中的内容同行显示,就需要用到盒模型,来配置我们的标签内容
    

    盒模型

    ![M(CWKLLY@4SAT[6JI1QM9IB](C:UsersoboDesktopM(CWKLLY@4SAT[6JI1QM9IB.png)

    1.由四部分组成:
    margin :外边距,控制盒子的位置(布局),通过左和上控制自身位置,通过右和下影响兄弟盒子位置(划区域)
    border:边框,样式/宽度/颜色
    padding:内边距,从显示角度控制文本的显示区域
    content(文本内容)
    注意:margin,padding:起始为上,顺时针一次赋值,不足边取对边
    
    要做到文本内移,设置padding,如果想显示区域不变,相应减少content
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            div{
                80px;/*content的参数*/
                height:80px;
                background-color: red;
                padding:10px;/*默认四边间距都是10px*/
                /*padding: 10px 5px;从上开始,顺时针赋值,上间距10,右间距5,没赋值的对称匹配*/
                /*
                padding-bottom: 10px;
                padding-left:10px ;
                padding-right:10px;
                padding-top:10px;*/
                border: 5px solid yellow;
                /*border三个参数,宽度,颜色,样式(实线,虚线等)*/
                /*border-color: yellow;
                border-style: dotted;
                border-5px ;*/
                margin: 10px 5px;
                 /*margin-top:20px ;
                margin-left:20px ;
                margin-right:20px ;
                margin-bottom:20px ;*/
            }
        </style>
    </head>
    <body>
        <div>123456</div>
        <div>654321</div>
    </body>
    </html>
    

    盒模型布局

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            body{margin: 0} <!--将body外框间距变为0-->
            div{
                78px;
                height:33px;
            background-color: blueviolet;
                border: black solid 1px;
                }
            .d2{margin-left:calc(80px *1) ;
                margin-top:-35px;}
            .d3{margin-left:calc(80px *2) ;
                margin-top:-35px;}
            .d4{margin-left:calc(80px *3) ;
                margin-top:-35px;}
            .d5{margin-left:calc(80px *4) ;
                margin-top:-35px;}
            .d6{margin-left:calc(80px *5) ;
                margin-top:-35px;}
            .d7{margin-left:calc(80px *6) ;
                margin-top:-35px;}
    
        </style>
    </head>
    <body>
        <div class="d1">1</div>
        <div class="d2">2</div>
        <div class="d3">3</div>
        <div class="d4">4</div>
        <div class="d5">5</div>
        <div class="d6">6</div>
        <div class="d7">7</div>
    </body>
    </html>
    

    margin两个坑

    1.要求b1与b2上下间距50px时
    方法一:将b1底部加长50px  margin-bottom: 50px;
    方法二:将b2顶部加长50px  margin-top:50px ;
    坑:当b1底部和b2顶部同时加长50px时,发现两者间距仍然为50px
    总结:盒模型上下间距时,会重叠,间距以两者间距离较大距离为最后的间距
        左右叠加正常,不会重叠
    
    <!--需求将b1与b2上下间距50px-->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            body{
                margin:0;}
            .b1{
                 80px;
                height:80px;
                background-color: cornflowerblue;
                /*第一种方法
                margin-bottom: 50px;*/
                margin-bottom:50px;
            }
            .b2{
                 80px;
                height:80px;
                background-color: blue;
                /*第二种方法
                margin-top:50px*/
                margin-top:50px ;
            }
        </style>
    </head>
    <body>
    <div class="b1">1234</div>
    <div class="b2">5678</div>
    </body>
    </html>
    
    
    第二个坑 :第一个有显示区域的子级会和父级联动(margin-top重叠), 取大值
            解决方案: 1.父级设置border-top | 2.父级设置padding-top
            向左移动不会有相同现象    
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            body{margin:0}
            .main{
                 400px;
                height:400px;
                background-color: red;
                /*解决方法1,将父标签内边距改变.将父标签与子标签解耦合
                padding: 1px;*/
                /*解决方法2,设置父标签上边框
                border-top:black solid 1px;*/
            }
            .sub1{
                 100px;
                height:100px;
                background-color: blueviolet;
                margin-top:50px/*子标签1会带着父标签一起偏移*/
            }
            .sub2{
                 100px;
                height:100px;
                background-color: yellow;
                margin-top: 50px;/*子标签2自己移动并不会带动父标签移动*/
            }
        </style>
    </head>
    <body>
        <section class="main">
            <section class="sub1">
            </section>
            <section class="sub2">
            </section>
        </section>
    
    </body>
    </html>
  • 相关阅读:
    设计模式——简单工厂模式
    异常信息ASM ClassReader failed to parse class file的问题解决
    freemarker学习笔记
    java实现邮箱验证的功能
    Quartz学习——Quartz简单入门Demo(二)
    Quartz大致介绍(一)
    深入理解Java线程池:ScheduledThreadPoolExecutor
    抢火车票引发的思考
    CGLib动态代理引起的空指针异常
    从原理上搞定编码(四)-- Base64编码
  • 原文地址:https://www.cnblogs.com/robert-zhou/p/10279142.html
Copyright © 2011-2022 走看看