选择器 常用样式 布局

今日内容:
  css:重点 -选择器, 布局
        -高级选择器 -伪类选择器
        -常用样式
        -三种布局方式
*form 提交方式:
  get:不安全提交数据,高效;
  post:安全的提交数据,低效;
  前台都可以给后台提交数据,后台一定会给前台一个反馈结果

*****高级选择器:
1.群组选择器:控制多个*/
  h1, .p, .a {
   color: red;
  }
  注:每一个选择器位,可以为id、class、标签、选择器组合
2.后代(子代)选择器:控制一个标签,前方都是修饰

  body .div2 .p2 { /*后代 空格,父子(孙)*/
  color: orange;
  }
  .div2 > div > .p2 { /*子代 >,父子*/
  color: pink;
  }

3.兄弟(相邻)选择器:控制一个标签,前方都是修饰

  .p3 ~ .i3 { /*兄弟 ~,可相邻也可不相邻,但必须通过上方修饰下方*/
  color: greenyellow;
  }
  .div3 + .i3 { /*相邻 +,必须相邻,但必须通过上方修饰下方*/
  color: green;
  }

 小结:

  高级选择器优先级:高级选择器通过权重(个数)区别优先级,前提多个选择器控制同一个标签;

  id>class>标签    eg:一个id选择器 高于 n和类与标签选择器的组合

  种类相同:比个数    eg:先比较id个数,谁多睡优先级高,个数相同再比较类,以此类推

  个数相同:比顺序    eg:所有类型所有个数(id,类,标签)都相同,在下方的起作用

  高级选择器种类不影响优先级 eg:后代选择器、子代选择器、兄弟选择器...不会运行优先级

伪类选择器

 /*()内填的是编号,所以从1开始*/
/*1.伪类选择器可以单独出现,相当于省略了统配*/
/*2.:nth-child先匹配层级位置,再匹配标签*/ /*3.:nth-of-type先匹配标签类型,再匹配层级位置*/
    <style>
i:nth-child(1) {
color: orange;
}
i:nth-child(4) {
color: red;
}

i:nth-of-type(1) {
color: brown;
}
i:nth-of-type(2) {
color: blue;
}
</style>

<style>
.box {
width: 150px;
}
.pp {
width: 50px;
height: 50px;
background-color: red;
border-radius: 50%;
float: left;
text-align: center;
line-height: 50px;
}

/* 2n偶数 2n-1|2n+1奇数 3n最后一列 3n+1|3n-2第一列 3n-1中间列*/
.pp:nth-child(3n-1) {
color: orange;
}

/*伪类选择器影响优先级,伪类就相当于class*/
.a1.a2 {
color: red;
}
.a1:nth-child(1) {
color: orange;
}
/*id > class=:nth- > 标签*/
</style>

<style>
/*属性选择器*/
p[a] {
color: crimson;
}
</style>
</head>
<body>

<a class="a1 a2" href="">aaaaaaaaaaaaaa</a>

<hr>
<!--p.pp.p${p$}*9-->
<div class="box">
<p class="pp p1" a>p1</p>
<p class="pp p2" b>p2</p>
<p class="pp p3">p3</p>
<p class="pp p4">p4</p>
<p class="pp p5">p5</p>
<p class="pp p6">p6</p>
<p class="pp p7">p7</p>
<p class="pp p8">p8</p>
<p class="pp p9">p9</p>
</div>

<hr>

<i class="i3">iiii1</i>
<p class="p3">pppp</p>
<div class="div3">dddd</div>
<i class="i3">iiii2</i>
<hr>
<div>
<i class="i3">iiii1</i>
<p class="p3">pppp</p>
<div class="div3">dddd</div>
<i class="i3">iiii2</i>
</div>
</body>
</html>

a标签的四大伪类:

<style>
        /*链接的初始状态*/
        a:link {
            color: deepskyblue;
        }
        /*链接的悬浮状态*/
        a:hover {
            /*cursor: wait;*/
            /*cursor: col-resize;*/
            cursor: pointer;
            color: blue;
        }
        /*链接的激活状态*/
        a:active {
            color: deeppink;
        }

        /**链接的已访问状态*/
        a:visited {
            color: yellow;
        }

    </style>

    <style>
        body {
            /*文本不能选择*/
            user-select: none;
        }
        /*普通标签都可以去使用 :hover :active */
        .btn {
            width: 80px;
            height: 38px;
            background-color: cornflowerblue;

            border-radius: 5px;
            text-align: center;
            line-height: 38px;
            color: white;
        }
        .btn:hover {
            cursor: pointer;
            background-color: deepskyblue;
        }
        .btn:active {
            background-color: blue;
        }
    </style>

常用样式:

文本样式:   /*字体大小: 最小12px,还需要更小就更换字体库*/
            font-size: 30px;

            /*字体库(字族):字体, 备用1, ..., 备用n*/
            /*font-family: "STSong", "微软雅黑";*/

            /*字重: 100~900  bold normal lighter*/
            font-weight: lighter;

            /*字体颜色*/
            color: tomato;

            /*水平位置: left center right*/
            text-align: center;

            /*行高(垂直位置):默认文本在所在行高中垂直居中,要实现文本的垂直居中,让行高 = 容器高*/
            line-height: 200px;

            /*文本划线: underline line-through overline none*/
            text-decoration: underline;

背景样式:  /*背景颜色*/
      background-color: red;
      /*背景图片*/
      background-image: url("img/001.png");
      /*平铺: no-repeat repeat repeat-x repeat-y */
      background-repeat: no-repeat;
      /*背景定位: x轴(left center right) y轴(top center默认 bottom)*/
      /*background-position: right top;*/
      /*指定尺寸移动*/
      /*background-position: 100px 100px;*/
      /*反向移动*/
      background-position: 10px -10px;

背景样式案例:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            background-color: cornflowerblue;
        }
        .h1 {
            /*width: 1300px;*/
            /*height: 900px;*/
            width: 500px;
            height: 100px;
            background-color: tomato;
        }
        .h1 {
            background-image: url("img/bg.png");
            background-position: 0 -150px;
        }
        .h1:hover {
            background-position: 0 -250px;
        }
    </style>
    <style>
        .p1 {
            width: 155px;
            height: 48px;
            background-color: green;
            background-image: url("img/bg.png");
        }
        .p2 {
            width: 157px;
            height: 48px;
            background-color: green;
            background-image: url("img/bg.png");
            background-position-x: -155px;
        }
        .p1:hover, .p2:hover {
            background-position-y: -48px;
            cursor: pointer;
        }
        /*背景图片操作:就是更换背景图片的位置*/
    </style>
</head>
<body>
    <div class="h1">

    </div>

    <p class="p1"></p>

    <p class="p2"></p>
</body>
</html>
边界圆角:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 400px;
            height: 200px;
            background-color: red;
        }
        .box {
            /*border-radius: 50%;*/

            /*左上是第一个角,顺时针编号,不足找对角,只有一个值同时控制4个角*/
            /*border-radius: 10px 20px 30px 40px;*/
            /*border-radius: 10px 50px 100px;*/
            /*border-radius: 10px 100px;*/
            /*border-radius: 100px;*/

            /*横向 / 纵向*/
            /*border-radius: 50% / 50px;*/

            /*横向1,2,3,4 / 纵向13,24*/
            /*border-radius: 10px 30px 50px 100px / 50px 100px;*/

            border-radius: 200px 200px 0 0 / 200px 200px 0 0;
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

显示方式:

显示方式 :
block:1.可以手动设置宽高 2.自带换行 3.支持所有css样式 inline:1.宽高只能由文本内容撑开,不能手动设置 2.不带换行 3.支持部分css样式 inline-block:1.可以手动设置宽高 2.不带换行 3.支持所有css样式

嵌套关系:
block:可以嵌套block、inline、inline-block
div、li搭架构的,可以任意嵌套 h1~h6、p 建议只嵌套inline,就是用来转文本的
inline:只用来嵌套inline
span、i、b、em、strong a一般都会修改其display为block
inline-block:不建议嵌套任何
img input系统都设计成了单标签
none:没有显示方式,就会在页面中隐藏
开发是:修改display的情况 - 要支持宽高,要更改位置(水平排列还是垂直排列)
block 的显示规则:
不同的标签在页面中有不同的显示规则
如有些是自带换行、有些同行显示、有些同行显示还支持宽高,这些不是标签的特性,而是标签的display属性值决定的

完成复杂的布局和样式,标签的显示方式都采用 block
a {
display: block;
}
a可以任意嵌套其他标签,还可以设置宽高,还支持所有css样式,但是a不再同行显示了(block自带换行)

如果解决block同行显示 => css布局

inline: 同行显示,不用去关宽高,不用额外操作
inline-block: 同行显示, 一般会主动设置宽或高、设置宽,高会等比缩放,反之亦然
有inline特性的标签,同行显示,但是有默认垂直对其方式vertical-align
block:默认显示规则
宽继承父级,高由内容撑开

overflow属性:

问题:
1
、规定了标签的宽高,标签的内容超出范围
2、规定了标签的宽高,标签内的子标签显示区域更大,超出范围 如果让父级宽高限制内容和子集
方法:
  内容超出,都会以 hidden 处理影藏,如果想显示全内容,采用子页面*/

hidden:影藏超出内容 scroll:以滚动显示超出内容 auto:有超出内容才滚动显示*/
盒模型:
  定义:页面中每一个标签都可称之为盒子,它由外边距、边框、内边距、内容四部分组成,每部分都有独立区域
  外边距 - margin - 控制位置
  边框 - border - 控制边框
  内边距 - padding - 控制内容与边框的间距
  内容 - content(width*height) - 文本内容或子标签显示的区域
  当要保证显示区域不变,内容往里偏移,增加padding、相应减少content
  border边框:宽度 、 样式 solid实线 dashed虚线 dotted点状线、 颜色

  margin参考系:自身原有位置
  margin的left和top控制自身位置
  margin的right和bottom控制兄弟位置

  
盒模型布局的地位:盒模型用来完成超简单的布局要求,一般都是用来辅助其他布局,完成布局的微调
  
  /*上右下左*/
  /*margin: 10px 20px 30px 40px;*/
  /*快速居右*/
  /*margin-left: auto;*/
  /*快速居中*/
  /*margin-left: auto;*/
  /*margin-right: auto;*/ margin: 0 auto;

浮动布局:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .wrap {
            width: 150px;
            background-color: cornflowerblue;
            /*height: 200px;*/
        }
        .d {
            width: 50px;
            height: 50px;
            background-color: orange;
            border-radius: 50%;
        }
        /*浮动布局:不再撑开父级高度,但浮动受父级宽度影响*/
        .d {
            float: right;
        }
        /*如何让父级刚刚好包含所有子标签:清浮动 - 不是清除子标签的浮动效果,而是让父级获得一个刚好的高度*/
        .wrap:after {
            display: block;
            content: "";
            /*清浮动的关键*/
            clear: both;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <div class="d d1">1</div>
        <div class="d d2">2</div>
        <div class="d d3">3</div>
        <div class="d d4"></div>
        <div class="d d5"></div>
        <div class="d d6"></div>
        <div class="d d7"></div>
        <div class="d d8"></div>
        <div class="d d9"></div>

    </div>
</body>
</html>

 

posted @ 2019-07-01 18:41  54菜鸟  阅读(596)  评论(0编辑  收藏  举报