• CSS小结


    css:层叠样式表,主要用于渲染html页面,例如设置文字的颜色 大小等等

    css与html整合的3种方式:

      1.内联样式表

        直接在标签里面使用style属性

        例如:  <xxx style="background-color: aquamarine;">天佑中华--内联</xxx> 

        注意:使用每个标签(元素)自带的style属性即可,但是一般不推荐这样使用,因为只能修改一个元素(标签的)样式  

      2.内部样式表

         在<sytle></sytle>(该标签可以放在任意的位置,但是建议放在head标签中)中编写样式

           例如: <xxx id/class="div1">天佑中华--内部</xxx> 

         注意:这里面不一定是只能使用id/class这种选择器;而是可以使用各种选择器    

        例如:

     1 <div id="div1">天佑中华</div>
     2 然后在head体里面引入该css样式表:
     3 <head>
     4   <sytle type="text/css">
     5   .div1{ 7       background-color: white;
     8       font-size: 10px;(最后的一个分号可以省略,但建议不要)
     9   }
    11   </sytle>
    12 </head> 

      3.外部样式表

        编写外部的css文件,编写的方式和在style里面的一致,并不需要添加什么头说明等等之类的东西
        在head标签体里面使用<link/>引入即可 不需要存在于style标签中
        例如: <link rel="stylesheet"(固定) href="./外部css.css"(路径) type="text/css"(固定)/> 

    选择器:常见的有以下这几种,各自有各自的优点

      使用方式:
      选择器{
        属性1:值1;
        属性2:值2;
      }

    1.id选择器(一般一个样式只出现一次就推荐使用id选择器)

     1 要求:
     2 1、html元素必须有id属性并且有值 例如:<div id="div1">
     3 2.css样式中通过#引入,后面加上id名 
     4 例如:
     5 <head>
     6   <style>
     7     #div1{
     8       color:red;   
     9       font-size:16px;
    10    }
    11   <style>
    12 </head>
    13 <body>
    14   <div id="div1">你好,世界</div>
    15 </body>

    2、class类选择器

     1 要求:
     2 1、html元素中必须有class属性并且有值 例如<div class="cls1">
     3 2、css中通过”.“引入,后面加class名 例如: .cls1
     4 注意:可以有多个元素的class属性相同;也就是说属于同一类
     5 例如:
     6 <head>
     7   <style>
     8     .cal1{
     9       color:red;10     }
    11   <style>
    12 </head>
    13 <body>
    14   <div class="cal1">你好</div>
    15   <div class="cal1">世界</div>
    16 </body>
    17 解释:这样两个div就可以拥有相同的样式;实现代码的复用

    3、元素(标签)选择器

     1 要求:
     2 直接用元素(标签)名即可 例如:xxx{....}
     3 例如:
     4 <head>
        <style> 5     div{ 6       font-size:14px; 7       color:red; 8     }
        </style>
    9 </haed> 10 <body> 11   <div>你好</div> 12   <div>世界</div> 13 </body> 14 解释:这样所有的div就拥有了相同的样式;但是有特殊的用特殊的;特殊性在后面会有介绍

    派生的选择器

    1、属性选择器(在元素选择器的前提下进行筛选;特殊的元素选择器)

     1 要求:
     2 html标签必须有一个属性(无论什么属性且有值) <xxx nihao="wohenhao"/>
     3 css中通过如下方式使用:
     4 元素名[属性=”属性值“]{.....}
     5 例如:
     6 <head>
     7   <style>
     8     span [att="nihao"]{
     9       color:red;10     }
    11  <style>
    12 </head>
    13 <body>
    14   <span att="nihao">你好</span>
    15 </body>

    2.后代选择器(作用于类)

     1 用法:使用空格,用于选择指定标签元素下的后辈元素(所有,不分第几代)
     2 例如:
     3 <head>
     4   .food li{
     5        样式,作用于所有的food类下的li标签 即水果   香蕉  苹果 梨都会被作用
            color:red;
    6   } 7</head> 8 <body> 9   <ul class="food"> 10     <li>水果 11   <ul> 12     <li>香蕉</li> 13     <li>苹果</li> 14     <li>梨</li> 15   </ul> 16     </li> 17   </ul> 18 </body>

    3.子选择器 类的第一代(直接)指定的元(作用于类)

     1 用法:使用>符号,用于选择指定标签元素的第一代元素
     2 例如:
     3   .food>li{
     4     border:1px solid red;
     5   }
     6 <ul class="food">
     7   <li>水果
     8     <ul>
     9       <li>香蕉</li>
    10       <li>苹果</li>
    11       <li>梨</li>
    12     </ul>
    13   </li>
    14   <li>蔬菜
    15     <ul>
    16       <li>白菜</li>
    17       <li>油菜</li>
    18       <li>卷心菜</li>
    19     </ul>
    20   </li>
    21 </ul>
    22 解释:这种情况下,food下的元素li(水果,蔬菜)就会加入了样式 ;而里面的第二代就不会被作用到

    4.通用选择器

    1 使用*,匹配html下的所有标签元素
    2 例如:
    3 *{
    4   color:red;
    5 }
    6 那么该head中的所有标签元素都加入了红色的样式

    5.锚伪类选择器

    允许给html不存在的标签(标签的某种状态)设置样式,比如说点击过后颜色改变
    a:hover{
      xxx 查看文档
    }

    选择器小结:

      id选择器:是一个元素(标签)

      class选择器:是一类元素

      元素选择器:是一种元素

      属性选择器:元素选择器的特殊用法

    使用的时候注意:
      若多个样式作用于一个元素的时候(样式就是说css里面的那些东西 “背景” “长度”等等)
      (一个元素可以被多种css整合 内部 外部 可以同时存在)
      不同的样式,会叠加 A说买辆车 B说买奔驰 没毛病
      相同的样式 就近原则 A说买红色 B说买蓝色 看谁离的近(也就是谁最后说)
      若多个选择器作用于一个元素的时候
      越特殊的优先级越高 id选择器的最高 类>元素 属性>元素

    ID选择器和类选择器的区别:
      相同点:都可以应用于任何元素
      不同点:
        1.不同的标签可以是相同的类,但是id只能被一个标签使用,并且只能使用一次,即使是同一种标签也不能
        可以这样写:(正确)

    1 .stress{
    2   color:red;
    3 }
    4 .bigsize{
    5   font-size:25px;
    6 }
    7 <span class="stress bigsize">三年级</span>
    8 上面代码的作用是为“三年级”三个文字设置文本颜色为红色并且字号为25px。

                下面的代码是不正确的

    1 #stressid{
    2   color:red;
    3 }
    4 #bigsizeid{
    5   font-size:25px;
    6 }
    7 <span id="stressid bigsizeid">三年级</span>

    分组选择符:逗号

    1 作用:可以为html中多个标签元素(也可以是各种选择器)设置同一样式,各个选择器之间使用逗号分隔就好了
    2 例如:
    3 span,h1{
    4   color:red;
    5 }
    6 相当于:
    7 span{color:red}
    8 h1{color:red}

     继承:

    css样式中有些是可以被继承,有些不可以被继承(可能具体使用的时候查看文档之类的吧)

     1 例如:
     2 p{
     3   color:red;
     4 }
     5 <p>
     6   我是<span>你好世界</span>
     7 </p>
     8 颜色具有继承性,如果span自己没有指定颜色的样式,那么就会继承p的颜色样式,显示为红色
     9 但是有些样式又不具有继承性:
    10 例如:border:1px solid red; 边框为1像素,实线 红色

    特殊性:

      如果存在多个样式作用于一个标签元素上的时候,要选择哪个样式呢?
      不同的选择器有不同的权值,选权值高的发挥作用
      各种选择器权值:
        继承的权值0.1
        元素标签的权值为1
        类选择符的权值为10
        ID选择符的权值最高为100
        例如:

    1 p{color:red;} /*权值为1*/
    2 p span{color:green;} /*权值为1+1=2*/
    3 .warning{color:white;} /*权值为10*/
    4 p span.warning{color:purple;} /*权值为1+1+10=12*/
    5 #footer .note p{color:yellow;} /*权值为100+10+1=111*/

    重叠:

      在具有相同的权值的情况下,又该如何选择那个样式表呢? 根据就近原则:
        内联样式表(标签内部)> 嵌入样式表(当前文件中)> 外部样式表(外部文件中)。

    重要性:

    权值不够,命令来凑
    有些时候需要为某些样式设置最高的权值,就可以使用!important

    1 例如:
    2 p{
    3   color:red
    4   !important;
    5 }
    6 注意:!important要写在分号的前面
    7 这种情况下,使用!important标注的样式一定会发挥作用

    属性部分:(只是列出个大概,具体想要实现的就可以查其文档)

     1 1.文字部分
     2 字体:font-family
     3 例如: bofy{
     4 font-family:"宋体"
     5 }
     6 颜色:color
     7 大小:font-size
     8 粗体:font-weight 
     9 normal 正常
    10 bold 加粗
    11 bolder 更粗
    12 lighter 更细
    13 斜体:font-sytle
    14 下划线:text-decoration:underline
    15 删除线:text-decoration:line-through
    16 段落排版——缩进:text-indent:2em 2个空格
    17 段落行间距:line-height:1.5em 1.5倍行距
    18 中文字间距,字母间距: letter-spacing:50px
    19 段落排版--对齐: text-align:center

    html元素分类:

    块状元素: 具有盒子模型的特征
      <div>、<p>、<hn>、<ol>、<ul>、<dl>、<table>、<address>、<blockquote> 、<form> 等等
    特点:
      1.每个块状元素都从新的一行开始,并且其后的元素也另起一行(大概就是每个一行)
      2.元素的高度 宽度 行高以及顶和底边距都可以设置
      3.元素宽度在不设置的情况下,和其父元素的宽度一致,除非自己设置一个宽度

    内联元素(行内元素):
      <a>、<span>、<br>、<i>、<em>、<strong>、<label>、<q>、<var>、<cite>、<code>等等
    特点:
      1.和其他元素都在一行上
      2.元素的高度 宽度 以及顶部和底部边距不可设置
      3.元素的宽度就是它包含的文字或者图片的宽度,不可改变
      4.内联元素之间有一个间距

    内联块状元素:--同时具备内联元素和块状元素的特点
      <img>、<input>等等
      display:inline-block
    特点:
      1.和其他元素都在一行上
      2.元素的高度 宽度 行高 以及顶和底边距都可以设置

    内联--->块状
      css样式中设置:display:block

    盒子模型:


      

      基本概念:
        border 边框
        margin 边界,两个盒子之间
        padding 盒子与盒子内的东西的间距 填充
          padding-left
          padding-right
          padding-top
          padding-bottom
      

      盒模型----边框:border
        border-style:
           dashed(虚线) dotted (点线) solid(实现)
        border-color:颜色
        border-边框宽度 用px单位

        让边框的其中一条显示:
          border-bottom:1px solid red;
          bottom-top:1px solid red;
          bottom-right:1px solid red;
          bottom-left:1px solid red;

      盒模型--宽度和高度
         css盒模型中的高度和宽度并不是整个物体的高度和宽度,而是里面元素内容的高度和宽度
         即css中设置的height和width都是里面的内容的大小

      盒模型--填充padding
        元素内容和边框之间的距离----填充 padding
        分上下左右
        可以合在一起写
          padding:20px 10px 15px 30px ----顺时针
          相当于分开每个写的一样的
           如果上、右、下、左的填充都为10px;可以这么写
          div{padding:10px;}
        如果上下填充一样为10px,左右一样为20px,可以这么写:
          div{padding:10px 20px;}

      盒模型--边界margin
        元素与其他元素之间的距离---边界margin
        也是分上下左右
        合在一起写:(顺时针)
          div{margin:20px 10px 15px 30px;}
        如果上右下左的边界都为10px;可以这么写:
          div{ margin:10px;}
        如果上下边界一样为10px,左右一样为20px,可以这么写:
          div{ margin:10px 20px;}

    布局模式:

      html页面中布局模式主要有以下3种
        1.流动模型(Flow)
        2.浮动模型(Float)
        3.层模型(Layer)

    流动模型:
      默认的网页布局模式
      特点:
        1.块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,
          因为在默认状态下,块状 元素的宽度都为100%。实际上,块状元素都会以行的形式占据位置。
        2.内联元素都会在所处的包含元素内从左到右水平分布显示

    浮动模型:
        为了解决块状模型独自占用一行的情况----即可以把两个块状元素并排显示  
        特点:
          任何的元素在默认的情况下是不可以浮动的,但是可以通过css定义成浮动
          float:left; 向左边浮动
          float:right 向左边浮动

    层模型:
        就像ps中的图层一样可以对每个图层精确定位操作
        三种模式:
          1.绝对定位 position:absolute
          2.相对定位 position:relative
          3.固定定位 position:fixed

    绝对定位:
      元素在整个界面中的绝对位置
      需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,
        然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。
        如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口
      例如:

    1   <style>
    2         #test{
    3             position:absolute;
    4             left: 90px;
    5             top: 40px;
    6         }
    7     </style>
    8 <div id="test">hello world</div>

    相对定位:
      这里的相对指的是相对于原来的位置
      写法:
        position:relative;
        left top right bottom 这种来操作
        然后相对于以前的位置移动,移动的方向和幅度由left、right、top、bottom属性确定,
        偏移前的位置保留不动----这句话指
          虽然我现在已经偏移了,但是我之前的位置然后有存在的,就是虽然看不到,但是那部分已经用不了
      例如:
         <div>xxx后面被改变</div> <span>仍然不能占用div被改变之前的位置</span> 

    固定定位:
      这里的固定是相对于浏览器来说,相对于浏览器的位置不发生变化
        就是说---就算我滑动滚动条,那么它还是在那个位置,不会随着滚动条改变而改变
      写法:
        position:fixed;
        bottom top left right 这些跟在后面(一般只需要2个)

    相对定位(relative)和绝对定位(absolute)结合使用:
    解释:
      绝对定位是实现被设置元素相对于浏览器(body)的绝对定位
      然后我们现在使用绝对定位和相对定位的结合
      来让绝对定位不再是相对于浏览器(body)的定位而可以相对于其他的元素进行绝对定位,

      总而来说:使元素可以相对于其他的元素进行绝对定位

    使用规则:
      1.参照定位的元素(参照物)必须是绝对定位元素(自己)的前辈元素(例如:父元素):

    1 <div id="box1">
    2     <div id="box2">xxx</div>
    3 </div>
    4 box1是box2的父元素

    2.参照定位的元素(参照物)中必须加入position:relative(不需要设置上下左右)

    1 #box1{
    2     200px;
    3     height:300px;
    4     position:relative;
    5 }

    3.定位元素(自己)必须加入posiiton:absolute(然后加上上下左右)

    1 #box2{
    2   200px;
    3   height:200px;
    4   position:absolute;
    5   top:20px;
    6   left:20px;
    7 }

      实现这3步就完成了让元素相对于另外一个元素进行绝对定位!

    缩写:(个人觉得还是乖乖写好,缩写啥缩写嘛)
      盒模型
      颜色
      字体

    颜色:
      字体颜色:color
      背景颜色:background-color
      边框颜色:border

    设置颜色的方式:
      1.英语单词
        red blue 等等
      2.三种色调
        R G B组合
      3.16进制(建议)
        相当于把三种色调的0-255变成 00-ff这种写法
        例如:#00ffff

    长度值:
      px(像素) em %

    居中:居中分2种,分别是水平居中和垂直居中

    水平居中————定宽块状元素
      当被设置元素为块状元素时用text-align:center(作用于行内元素)就不起作用了,
      这时也分两种情况:定宽块状元素和不定宽块状元素

      定宽块状元素:块状元素的宽度width为固定值
        满足 定宽+块状的就可以通过

      做法:

        设置“左右margin”值为“auto” ---来实现居中
        例如:

    1 div{
    2   200px; /*定宽*/
    3   margin-left:auto;
    4   mergin-right:auto;
    5 }
    注意:元素的上下margin是可以随意设置的
    <div>我是定宽块状元素</div>


      不定宽块状元素:
        不定宽:即width不确定
        居中方式(3种):
          1.加入table标签
          2.设置display:inline
            与第一种类似,显示类型设置为行内元素,进行不定宽元素的属性设置
          3.设置position:relative和left:50%
            利用相对定位,将元素向左偏移50%达到居中
    1.加入table标签: 
      利用table标签的长度自适应性--
        即不定义其长度也不默认父元素body的长度(table其长度根据其内文本长度决定)
        有点像android中的wrap_conponet属性
        因此可以看做一个定宽度块元素,然后再利用定宽度块状居中的margin的方法,使其水平居中。
    步骤:
      1.为需要设置居中的元素外面加入一个table标签(一定要包括<tbody> <tr> <td>)
      2.为这个table设置“左右margin居中” ----(和定宽块状元素的方法一样)
    例如:

     1 table{
     2   margin-left:auto;
     3   mergin-right:auto;
     4 }
     5 
     6 <div>
     7   <table>
     8     <tbody>
     9       <tr><td>
    10       <ul>
    11         <li>1111</li>
    12         <li>2222</li>
    13         <li>3333</li>
    14       </ul>
    15       </td></tr>
    16     </tbody>
    17   </table>
    18 </div>

    方式2:使用display:inline
      这句话的意思是:把块状元素改变成行内元素
      然后就可以使用行内元素居中的方式:text-align:center来处理

     1 <body>
     2   <div class="container">
     3   <ul>
     4     <li><a href="#">1</a></li>
     5     <li><a href="#">2</a></li>
     6     <li><a href="#">3</a></li>
     7   </ul>
     8   </div>
     9 </body>
    10 
    11 <style>
    12   .container{
    13     text-align:center;
    14   }
    15 /* margin:0;padding:0(消除文本与div边框之间的间隙)*/
    16   .container ul{
    17     list-style:none;
    18     margin:0;
    19     padding:0;
    20     display:inline;
    21 }
    22 /* margin-right:8px(设置li文本之间的间隔)*/
    23   .container li{
    24     margin-right:8px;
    25     display:inline;
    26   }
    27 </style>
    优点:
      不用像第一种方式那样增加无语义标签
    缺点:
      由于把块状元素改成了行内元素,缺少了一些功能 例如:设置长度值

    方式3:设置position:relative方式
      通过给父元素设置float,然后给父元素设置position:relative和left:50%,
      子元素设置 position:relative 和 left: -50% 来实现水平居中。

    垂直居中
      分2种情况
        父元素高度确定的单行文本
        父元素高度确定的多行文本

    父元素高度确定的单行文本:
      通过设置父元素的height和line-height高度一致来实现的
      (height:该元素的高度,line-height:顾名思义,行高(行间距)指在文本中行与行之间的基线间的距离)
      line-height与font-size的计算值之差
      在 CSS 中成为“行间距”。分为两半,分别加到一个文本行内容的顶部和底部

    1 写法:
    2 height:100px;
    3 line-height:100px
    4 这两者达到相同的时候
    注意:
    这种文字行高与块高一致带来了一个弊端:当文字内容的长度大于块的宽时,就有内容脱离了块。

    父元素高度确定的多行文本:
    方法1:
      设置table标签(一定要包括tbody tr td),同时设置vertical-align:middle
      css中有一个用于竖直居中的属性vertical-align,在父元素设置此样式时,会对inline-block类型的子元素都有用。

    隐性改变display类型
      不论之前是什么类型元素(display:none除外)设置以下2个句之一:
        1.position : absolute
        2.float:left或float:right
        简单来说,只要html代码中出现以上两句之一
          元素的display显示类型就会自动变为以display:inline-block(块状元素)的方式显示
          当然就可以设置元素的 width 和 height 了,且默认宽度不占满父元素。

  • 相关阅读:
    js中的投掷筛子的小游戏
    js俩习题
    python中socket理论
    python实现计时器(装饰器)
    python之正则表达式(re模块)用法总结
    python练习题之随机生成验证码
    python中模块介绍
    python中的装饰器基本理论
    python类与对象练习题扑克牌
    Java抓取网页数据
  • 原文地址:https://www.cnblogs.com/shan-kylin/p/9212740.html
Copyright © 2020-2023  润新知