CSS选择器乐字节Java

47次阅读

共计 5643 个字符,预计需要花费 15 分钟才能阅读完成。

CSS

​ CSS(英文全称:Cascading Style Sheets)层叠样式表, 是一种用来表现 HTML(标准通用标记语言的一个应用)或 XML(标准通用标记语言的一个子集)等文件样式的计算机语言。

​ CSS 目前最新版本为 CSS3,是能够真正做到网页表现与内容分离的一种样式设计语言。相对于传统 HTML 的表现而言,CSS 能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。CSS 能够根据不同使用者的理解能力,简化或者优化写法,针对各类人群,有较强的易读性。

CSS 是用来美化网页用的,没有网页则 CSS 毫无用处,所以 CSS 需要依赖 HTML 展示其功能。

CSS 的基本使用

CSS 基本语法

​ CSS 样式由选择器和一条或多条以分号隔开的样式声明组成。每条声明的样式包含着一个 CSS 属性和属性值。

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

注意:

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

注释

多行注释:

/* 这里的内容就是注释 */

CSS 的使用

1. 行内式

​ 行内样式将样式定义在具体 html 元素的 style 属性中。以行内式写的 CSS 耦合度高,只适用于当前元素,在设定某个元素的样式时比较常用。

<p style="color:red;font-size:50px;"> 这是一段文本 </p>

在当前元素使用 style 属性的声明方式。

​ style 是行内样式属性;

​ color 是颜色属性;red 是颜色属性值;

​ font-size 是字体大小属性;50px 是字体大小属性值

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">

​ rel:rel 属性规定当前文档与被链接文档之间的关系。

​ stylesheet: 文档的外部样式表。

​ 很多时候,大量的 HTML 页面使用了同一个 CSS。那么就可以将这些 CSS 样式保存在一个单独的.css 文件中,然后通过 <link> 元素去引入它。

注意:当有多重样式时,记住前提规则,越精确越优先。

CSS 选择器

​ 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。

​ CSS 选择器有很多,掌握常用的即可;

基本选择器

通用选择器

选择所有 <font color=”red”>*</font>

* {......}
* {color: orange;}
元素选择器

选择指定标签

元素名称 {......}
p {
    color: red;
    font-size: 20px;
}
ID 选择器

选择设置过指定 id 属性值的元素 <font color=”red”>#</font>

#id 属性值 {......}
#p1 {font-weight: bold;}
类选择器

选择设置过指定 class 属性值的元素 <font color=”red”>.</font>

.class 属性值 {......}
.hidden {display: none;}
分组选择器

​ 当几个元素样式属性一样时,可以共同调用一个声明,元素之间用逗号分隔

选择器 1, 选择器 2,... {......}
h2 , #pre1 {
    color: orange;
    font-style: italic;
}

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

​ 元素选择器:1

​ 类选择器:10

​ id 选择器:100

​ 内联样式:1000

组合选择器

​ CSS 组合选择器说明了两个选择器直接的关系。CSS 组合选择符包括各种简单选择符的组合方式。

​ 在 CSS 中包含了四种组合方式: 后代选取器(以空格分隔),子元素选择器(以大于号分隔),相邻兄弟选择器(以加号分隔),普通兄弟选择器(以波浪线分隔)。

后代选择器(派生选择器)

​ 用于选择指定标签元素下的后辈元素,以空格分隔

选择器 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 {......}
#d + div {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 常用属性设置

背景

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

background-color

​ 设置元素的背景颜色

body {background-color:#ff0000;}
background-image

​ 设置元素的背景图像,默认情况下,背景图像进行平铺重复显示,以覆盖整个元素实体。

body {background-image:url('paper.gif');
}
background-repeat

​ 设置是否及如何重复背景图像

body {background-image: url(img/logo.jpg);    
    background-repeat: no-repeat;
}

文本

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

1)underline

​ 对文本添加下划线,与 HTML 的 u 元素相同。

2)overline

​ 对文本添加上划线。

3)line-through

​ 对文本添加中划线,与 HTML 中的 s 和 strike 元素相同。

4)none

​ 关闭原本应用到元素上的所有装饰。

h3 {text-decoration:underline;}
text-indent

​ 设置文本首行缩进

p.ident2 {text-indent: 2em;}

​ em 一个相对值,例如页面的文本大小为 17px, 则 2em 就为 17px*2

字体

font-family

​ 文本字体,该属性设置文本的字体。

​ font-family 属性应该设置几个字体名称作为一种 ” 后备 ” 机制,如果浏览器不支持第一种字体,他将尝试下一种字体,所以尽量将不常见的字体靠前,将最常见的字体放置在最后,作为替补。

注意:

​ 1)只有当字体名中含有空格或 #、$ 之类的符号时(如 New York),才需要在 font-family 声明中加引号:

body {font-family: "arial black";}

​ 2)多个字体系列是用一个逗号分隔指明

/* 靠前的字体先生效 */
p{font-family: 微软雅黑, 黑体,"agency fb";}
font-size

​ 文本大小

body {font-size: 50px;  /* 字体大小 50px*/}
#span1 {font-size: 25px;  /* 字体大小 25px*/}
font-style

​ 字体风格,该属性最常用于规定斜体文本。属性值:normal、italic、oblique

​ 1)normal:文本正常显示;

​ 2)italic:文本斜体显示;

​ 3)oblique:文本倾斜显示,oblique 是将文字强制倾斜。

​ 说明:一般情况下,字体有粗体、斜体、下划线、删除线等诸多属性,但是不是所有字体都具有这些属性,一些不常用字体可能只有正常体,若使用 italic 属性则没有效果,所以需要 oblique 属性强制倾斜。

font-weight

​ 字体加粗,该属性设置文本的粗细。

​ bold:可以将文本设置为粗体。

​ 100 ~ 900:为字体指定了 9 级加粗度。如果一个字体内置了这些加粗级别,那么这些数字就直接映射到预定义的级别。

​ 100 对应最细的字体变形;

​ 900 对应最粗的字体变形;

​ 400 等价于 normal;

​ 700 等价于 bold。

对齐方式

text-align

​ 规定元素中的文本的水平对齐方式。属性值如下:

注意:

​ 值 justify 可以使文本的两端都对齐。在两端对齐文本中,文本行的左右两端都放在父元素的内边界上。然后,调整单词和字母间的间隔,使各行的长度恰好相等。对最后一行不生效。

display 属性

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

浮动

​ float 的属性值有 none、left、right。

  1. 只有横向浮动,并没有纵向浮动。
  2. 会将元素的 display 属性变更为 block。
  3. 浮动元素的后一个元素会围绕着浮动元素(典型运用是文字围绕图片)
  4. 浮动元素的前一个元素不会受到任何影响(如果你想让两个块状元素并排显示,必须让两个块状元素都应用 float)。

盒子模型

​ 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-style 的属性


​ 4)border-collapse

​ 设置是否将表格边框折叠为单一边框。

​ 属性值:separate(默认,单元格边框独立)、collapse(单元格边框合并)

table {border-collapse : collapse;}
padding

​ 设置元素所有内边距的宽度,或者设置各边上内边距的宽度。

​ 如果在表的内容中控制文本到边框的内边距,使用 td 和 th 元素的填充属性:

td {padding:15px;}

​ 单独设置各边的内边距:padding-top、padding-left、padding-bottom、padding-right

​ <font color=”red”> 默认按照上右下左的顺序设定 </font>

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>

​ 注意:通过 padding 属性设置元素内边距时,会使元素变形。若不想影响格式效果,可以用 margin 属性设置元素外边距。

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 表示左右外边距自动计算。

​ 但是上下外边距在自动计算时不会生效,而左右外边距会生效,表现为居中状态,效果如下:

​ 若要设置为上下左右居中状态,则要计算好自行设置上下的外边距,效果如下:
​ 注意:此时使用 margin-top 不生效。了解

正文完
 0