CSS语法,样式表,选择器,常用属性,定位和浮动

css

一、简介

       CSS(Cascade Style Sheets)层叠样式表, 是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
      CSS是用来美化网页用的,没有网页则CSS毫无用处,所以CSS需要依赖HTML展示其功能 。

二、基本语法

      CSS 样式由选择器和一条或多条以分号隔开的样式声明组成。每条声明的样式包含着一个 CSS属性和属性值。
在这里插入图片描述

选择器名{
属性 : 属性值;
......
}
div{
background-color : red;
}

注意:

  • css声明要以分号;结束,声明以{}括起来
  • 建议一行书写一个属性
  • 若值为若干单词,则要给值加引号,如 font-family: “agency fb”;


三、CSS层叠样式表

1.行内样式表

  • 行内式式将样式定义在具体html元素的style属性中。以行内式写的CSS耦合度高,只适用于当前元素,在设定某个元素的样式时比较常用。
<p style="color:red;font-size:50px;">这是一段文本</p>

2.内部样式表

  • 嵌入式通过在html页面内容开辟一段属于css的代码区域,通常做法为在< head>标签中嵌套<style>标签,在<style>中通过选择器的方式调用指定的元素并设置相关 CSS。
<style type="text/css">
	p {
		color: blue;
		font-size: 40px;
	}
</style>

3.外部样式表

  • 在实际开发当中,很多时候都使用引入外联样式文件,这种形式可以使html页面更加清晰,而且可以达到更好的重用效果。

style.css

p {
	color: green;
	font-size: 30px;
}

test.html

<link rel="stylesheet" type="text/css" href="style.css">


四、CSS选择器

  • 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。CSS选择器有很多,掌握常用的即可;

1.基本选择器

  • 通用选择器
选择所有
* {
	color: orange;
}
  • 元素选择器
元素名称{......}
p{
color: red;
font-size: 20px;
}
  • id选择器
#id属性值{......}
#p1 {
font-weight: bold;
}
  • 类选择器
.class属性值{......}
.hidden {
	display: none;
}
  • 属性选择器
选取带有指定属性的元素
[属性名]{......}
[id]{
color: red;
font-size: 20px;
}
用于选取带有指定属性和值的元素
[属性名=属性值]{……}
[id=div3]{
color: green;
font-family: "微软雅黑";
}
选取属性值中包含指定词汇的元素,通常是以空格分隔的多个词汇。
[attribute~=value]
[title~=flower]{
border: 5px solid yellowgreen;
}
<p>title 属性中包含单词 "flower" 的图片会获得黄色边框。</p>
<img src="../img/eg_tulip.jpg" title="tulip flower" />
<br />
<img src="../img/shanghai_lupu_bridge.jpg"title="lupu bridge" />
选取带有以指定值开头的属性值的元素,该值必须是整个单词,通常是一中划线分割的一个单词。
[attribute|=value]
[class|=en]{
border: 5px solid yellowgreen;
}
<p class="en">Hello!</p>		<!--英文-->
<p class="en-us">Hi!</p>		<!--美式英文-->
<p class="en-gb">Ello!</p>
<p class="zh">nihao!</p>
选取带有以指定值开头的属性值的元素,该值必须是整个单词,通常是一中划线分割的一个单词。
[attribute|=value]
[class|=en]{
border: 5px solid yellowgreen;
}
<p class="en">Hello!</p>		<!--英文-->
<p class="en-us">Hi!</p>		<!--美式英文-->
<p class="en-gb">Ello!</p>
<p class="zh">nihao!</p>
匹配属性值以指定值结尾的每个元素
[attribute$=value]
[class$=test]{
background:#ffff00;
}
<div class="first_test">第一个 div 元素。</div>
<div class="second">第二个 div 元素。</div>
<div class="test">第三个 div 元素。</div>
<p class="test">这是段落中的文本。</p>
匹配属性值中包含指定值的每个元素
[attribute*=value]
[class*=test]{
background:#ffff00;
}
<div class="first_test">第一个 div 元素。</div>
<div class="second">第二个 div 元素。</div>
<div class="test">第三个 div 元素。</div>
<div class="last-test-example">第四个 div 元素</div>
  • 分组选择器
当几个元素样式属性一样时,可以共同调用一个声明,元素之间用逗号分隔
选择器1,选择器2,...{......}
h2 , #pre1 {
	color: orange;
	font-style: italic;
}

CSS样式的优先级,是根据选择器的精确度/权重来决定的,常见的权重如下,权重越大,优先级越高

  • 元素:1
  • 类:10
  • id:100
  • 内联样式:1000

2.组合选择器
CSS组合选择器说明了两个选择器直接的关系。 CSS组合选择符包括各种简单选择符的组合方式。
在 CSS3 中包含了四种组合方式: 后代选取器(以空格分隔),子元素选择器(以大于号分隔),相邻兄弟选择器 (以加号分隔),普通兄弟选择器(以波浪线分隔)。

  • 后代选择器(派生选择器)
用于选择指定标签元素下的后辈元素,以空格分隔
选择器1 选择器2 {......}
.food  li {
border: 1px solid red;
}
<h1>食物</h1>
		<ul class="food">
			<li>水果
				<ul>
					<li>香蕉</li>
					<li>苹果</li>
					<li>梨</li>
				</ul>
			</li>
			<li>蔬菜
				<ul>
					<li>白菜</li>
					<li>油菜</li>
					<li>卷心菜</li>
				</ul>
			</li>
		</ul>
  • 子元素选择器
用于选择指定标签元素的所有第一代子元素,以大于号分隔
选择器1 > 选择器2 {......}
.food > li {
	border: 1px solid red;
}
Html代码同上
  • 相邻兄弟选择器
可选择紧接在另一元素后的元素,且二者有相同父元素。以加号分隔
选择器1 + 选择器2 {......}
#d + div {
	border: 1px solid red;
}
<div id=’d’>
		相邻兄弟选择器1
		<ul>
			<li>开心麻花</li>
			<li>贾玲</li>
			<li>宋小宝</li>
		</ul>
	</div>
	<div>
		相邻兄弟选择器2
</div>
  • 普通兄弟选择器
选择紧接在另一个元素后的所有元素,而且二者有相同的父元素,以波浪线分隔
选择器1 ~ 选择器2 {......}
li ~ li {
	background-color : yellow;
}
<div>
		普通兄弟选择器1
		<ul>
			<li>开心麻花</li>
			<li>贾玲</li>
			<li>宋小宝</li>
			<li>沈腾</li>
			<li>王宁</li>
		</ul>
	</div>


四、CSS常用属性

1.CSS背景

  • CSS 背景属性用于定义HTML元素的背景效果

  • background-color

设置元素的背景颜色
body {background-color:#ff0000;}
  • background-image
设置元素的背景图像,默认情况下,背景图像进行平铺重复显示,以覆盖整个元素实体。
body {background-image:url('paper.gif');}
  • background-repeat
设置是否及如何重复背景图像
body {
background-image: url(../img/shanghai_lupu_bridge.jpg);
	background-repeat: no-repeat;
}

在这里插入图片描述

2.文本

  • color
设置文本的颜色
body {color:blue;} 
h1 {color:#00ff00;} 
h2 {color:rgb(255,0,0);}
  • text-align
设置文本对齐方式,center(居中),left(左对齐),right(右对齐)
body {text-align:center;}	
h1 {text-align:right;} 
h2 {text-align:right;}
  • text-decoration
    规定添加到文本的修饰,属性值:none、underline、overline、line-through
    • underline
      • 对文本添加下划线,与HTML的u元素相同
    • overline
      • 对文本添加上划线
    • line-through
      • 对文本添加中划线,与HTML中的s和 strike 元素相同
    • none
      • 关闭原本应用到元素上的所有装饰
h3 {text-decoration:underline;}
  • text-indent
设置文本首行缩进,2em就是2个字的距离
p.ident2 {text-indent: 2em;}

3.字体

  • font-family

    • 文本字体,该属性设置文本的字体
    • font-family属性应该设置几个字体名称作为一种"后备"机制,如果浏览器不支持第一种字体,他将尝试下一种字体,所以尽量将不常见的字体靠前,将最常见的字体放置在最后,作为替补。
    • 注意
      • 只有当字体名中含有空格或#、$之类的符号时(如 New York),才需要在font-family声明中加引号:
        • body {font-family: "arial black";}
      • 多个字体系列是用一个逗号分隔指明
        • p{font-family: 微软雅黑,黑体,"agency fb";}//靠前的字体先生效
  • font-size

文本大小
body {font-size: 50px;}/*字体大小50px*/
#span1 {font-size: 25px;}/*字体大小25px*/
  • font-style
    字体风格,该属性最常用于规定斜体文本。 属性值:normal、italic、oblique

  • font-weight
    字体加粗,该属性设置文本的粗细。
    bold:可以将文本设置为粗体。
    100 ~ 900:为字体指定了 9 级加粗度。如果一个字体内置了这些加粗级别,那么这些数字就直接映射到预定义的级别。
    100 对应最细的字体变形;
    900 对应最粗的字体变形;
    400 等价于 normal;
    700 等价于 bold。

4.列表

  • list-style
    该属性按如下顺序设置列表样式:
    list-style-type:列表项目标记样式。
    list-style-position:列表项目标记位置
    list-style-image:把图像设置为列表中的项目标记
    • list-style-type
      在这里插入图片描述
    • list-style-position
      在这里插入图片描述
    • list-style-image
      在这里插入图片描述

5.盒子模型

  • border、padding、margin三个属性构成了盒子模型。
    在这里插入图片描述
  • border
设置所有的边框属性。
1)可同时设置边框的宽度、样式、颜色
table, th, td { border: 1px solid black; }
table { width:100%; height:50px; }

2)使用border-width、border-style、border-color单独设置
table,td {
border-width: 1px;
border-style: dotted;
border-color: green;
}

3)border-collapse
置是否将表格边框折叠为单一边框,属性值:separate(默认,单元格边框独立)、collapse(单元格边框合并)。
table { border-collapse : collapse; }

4)border-spacing设置分隔单元格边框的距离。
注意:
设置间距,border-collapse: separate;的状态下才有效。

table {border-spacing:10px;}

border-style的属性
在这里插入图片描述

  • padding
    • 设置元素所有内边距的宽度,或者设置各边上内边距的宽度。如果在表的内容中控制文本到边框的内边距,使用td和th元素的填充属性: td { padding:15px; }
    • 单独设置各边的内边距:padding-top、padding-left、padding-bottom、padding-right
    • 默认按照上右下左的顺序设定
    • 注意:通过padding属性设置元素内边距时,会使元素变形。若不想影响格式效果,可以用margin属性设置元素外边距。
td .test1 {padding: 1.5cm}		
td .test2 {padding: 0.5cm 2.5cm}

<table border="1">
<tr>
	<td class="test1">
		这个表格单元的每个边拥有相等的内边距。
	</td>
</tr>
</table>
<br />
<table border="1">
<tr>
	<td class="test2">
	这个表格单元的上和下内边距是0.5cm,左和右内边距是 2.5cm。
	</td>
</tr>
</table>
  • margin
设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度。
p.margin {margin: 2px 4px 3px 4px;} 

单独设置各边的外边距:margin-top、margin-left、margin-bottom、margin-right
p.margin{
margin-top:100px; 
margin-bottom:100px;
margin-right:50px; 
margin-left:50px; 
} 
*{margin: auto auto;} 
*{margin: 100px auto;}

说明:
auto:自动,可以理解为居中的意思。浏览器自动计算外边距。
margin: auto auto:第一个auto表示上下外边距自动计算,第二个auto表示左右外边距自动计算。但是上下外边距在自动计算时不会生效,而左右外边距会生效,表现为居中状态,效果如下:
在这里插入图片描述
若要设置为上下左右居中状态,则要计算好自行设置上下的外边距,效果如下:
在这里插入图片描述

6.对齐方式

  • text-align

    • 它是针对于元素的内容
      属性值
      Left
      center
      right
      p{text-align: center;} p是块元素,left、right和center会作用于整个行。
  • vertical-align

    • 它相当于image标签里的align属性,是容器中元素相对于内容的显示
  • display

    • display 属性规定元素应该生成的框的类型。这个属性用于定义建立布局时元素生成的显示框类型。

    • 属性值
      在这里插入图片描述

五、定位和浮动

  • CSS 定位 (positioning) 属性允许你对元素进行定位 ,定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。
  • CSS 有三种基本的定位机制:普通流、浮动和绝对定位
  • 除非专门指定,否则所有框都在普通流中定位,即普通流中的元素的位置由元素在HTML 中的位置决定
  • 浏览器在读取HTML源代码的时候是根据元素在代码出现的顺序读取,最终元素的呈现方式是依据元素的盒子模型来决定的。行内元素是从左到右,块状元素是从上到下。默认的书写方式即是普通流。

1.position (绝对定位)

  • 通过使用 position 属性,我们可以选择 4 种不同类型的定位,这会影响元素框生成的方式
static :元素框正常生成。作为文档流的一部分(默认值) 
relative :元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。 
absolute :元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。 
fixed :元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。 

static : 没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)
relative : 生成相对定位的元素,相对于其正常位置进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定
absolute : 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
fixed : 生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。

<style type="text/css">
div{ width: 100px; height: 50px; line-height: 50px; text-align: center; color: #fff; }
</style>
<div style="background: blue">A</div>
<div style="background: red; position: relative; top: 20px; left: 20px;">B</div>
<div style="background: green">C</div>

2.float(浮动)
float的属性值有none、left、right。

  • 只有横向浮动,并没有纵向浮动。
  • 当元素应用了float属性后,将会脱离普通流,其容器(父)元素将得不到脱离普通流的子元素高度。
  • 会将元素的display属性变更为block。
  • 浮动元素的后一个元素会围绕着浮动元素(典型运用是文字围绕图片)
  • 浮动元素的前一个元素不会受到任何影响(如果你想让两个块状元素并排显示,必须让两个块状元素都应用float)。
  • 解决块浮动可以使用claer关键字
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        /*
         一个ul,width200px,高度不定,其中存在6个li标签,每一个li标签的width100px,高度150px
            1)123在一排,456在一排   ->inline-block   ->浮动
            2)li2 高度变成200px了,还是要求 123在一排,456在一排   ->inline-block   ->浮动
        */
        ul{
            width:300px;

            font-size: 0;
        }
        li{
            width:100px;
            height:150px;
            background: pink;
            list-style: none;

            font-size: 30px;
            color: #fff;
            text-align: center;
            line-height: 150px;

            /*行内块*/
            /*display: inline-block;*/

            /*浮动*/
            float:left;
        }
        li:nth-child(2){
            height:200px;
        }
        li:nth-child(4){
            clear: both;
        }
    </style>
</head>
<body>
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
    </ul>
</body>
</html>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值