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-width:边框宽度 用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     width:200px;
3     height:300px;
4     position:relative;
5 }

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

1 #box2{
2   width: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   width: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 了,且默认宽度不占满父元素。

posted @ 2018-06-22 11:51  Shan-KyLin  阅读(336)  评论(0编辑  收藏  举报