0、前言
准备做一个Linux网络服务器应用实战,通过网页和运行在Linux下的服务器程序通信,这是第三篇,介绍一下CSS,优化上一篇文章中制作的HTML页面。
1、CSS常用语法
CSS(层叠样式表)是用于描述HTML或XML(包括如SVG、MathML等衍生技术)文档样式的标记语言。CSS语法规则相对简单且直观,它主要由选择器和声明块组成。
1.1 基本语法
CSS规则由两部分组成:选择器和一条或多条声明。
选择器 {
属性: 值;
属性: 值;
/* 更多属性 */
}
- 选择器:用于选择你想要样式化的HTML元素。它可以是一个元素名、类名、ID名、伪类等。
- 声明块:在大括号
{}
中包含一条或多条声明。 - 声明:由属性和值组成,中间用冒号
:
分隔,并以分号;
结束。每个声明代表一个样式属性的设置。
1.2 选择器
- 元素选择器:基于HTML元素名来选择元素,如
p
,div
,span
等。 - 类选择器:使用
.
加上类名来选择元素,如.myClass
。 - ID选择器:使用
#
加上ID名来选择元素,如#myID
。ID选择器具有更高的优先级。 - 属性选择器:基于元素的属性和属性值来选择元素,如
[type="text"]
。 - 伪类选择器:用于选择HTML元素的特定状态,如
:hover
用于鼠标悬停时的状态,:active
用于元素被激活时的状态等。 - 组合选择器:可以使用逗号
,
来组合多个选择器,使它们共享相同的样式规则。
1.3 属性和值
1.3.1 文本
font-family
: 设置字体类型,如Arial
,Times New Roman
,Microsoft YaHei
等。font-size
: 设置字体大小,可以使用绝对单位(如px
、pt
)或相对单位(如em
、%
)。color
: 设置文本颜色,使用颜色名、十六进制、RGB、RGBA等。text-align
: 设置文本水平对齐方式,可选值有left
、center
、right
、justify
。text-decoration
: 设置文本装饰,可选值有none
、underline
、overline
、line-through
、blink
。
1.3.2 背景
background-color
: 设置背景颜色。background-image
: 设置背景图片。background-repeat
: 设置背景图片是否及如何重复,可选值有repeat
、repeat-x
、repeat-y
、no-repeat
。background-position
: 设置背景图片的位置。
1.3.3 盒模型
width
和height
: 设置元素的宽度和高度。padding
: 设置元素的内边距。border
: 设置元素的边框,可以包括border-width
、border-color
、border-style
(如solid
、dotted
、dashed
等)。margin
: 设置元素的外边距。
1.3.4 定位
position
: 设置元素的定位方式,可选值有static
、relative
、absolute
、fixed
、sticky
。top
、right
、bottom
、left
: 与position
属性一起使用,定义元素的位置。z-index
: 设置元素的堆叠顺序。
1.3.5 显示
display
: 控制元素的显示方式,如block
、inline
、inline-block
、none
等。visibility
: 设置元素的可见性,可选值有visible
、hidden
。opacity
: 设置元素的透明度,取值范围从0
(完全透明)到1
(完全不透明)。
1.4 其他重要概念
- 继承与层叠,CSS中的样式可以通过继承从父元素传递到子元素,但并非所有属性都可以继承。层叠则是当多个样式规则应用于同一元素时,决定哪个规则优先的机制。层叠顺序由选择器的优先级和样式来源(如内联样式、ID选择器、类选择器、元素选择器等)决定。
- 盒模型,CSS盒模型是页面布局的基础,每个HTML元素都可以看作是由内容、内边距(padding)、边框(border)和外边距(margin)组成的矩形盒子。这些属性可以用来控制元素的尺寸和与其他元素之间的空间关系。
- 导入与外部样式表,CSS可以写在HTML文件的
<style>
标签内,也可以保存在单独的.css
文件中,并通过HTML文件的<link>
标签引入。此外,还可以使用@import
规则在一个样式表中导入另一个样式表。
2、优化界面
使用css优化上一篇文章Linux应用实战之网络服务器(二)HTML介绍中设计的HTML界面。
2.1 登录界面优化
优化后代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
text-align: center;
padding: 20px;
}
h2 {
color: #333;
}
form {
max-width: 300px;
margin: 0 auto;
background-color: #fff;
padding: 20px;
border-radius: 5px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
label {
display: block;
text-align: left;
margin-bottom: 5px;
}
input {
width: calc(100% - 10px);
padding: 8px;
margin-bottom: 10px;
border: 1px solid #ccc;
border-radius: 3px;
display: inline-block;
}
button {
padding: 8px 20px;
background-color: #007bff;
color: white;
border: none;
border-radius: 3px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<h2>Login</h2>
<form>
<label for="username">Username:</label>
<input type="text" id="username" name="username">
<label for="password">Password:</label>
<input type="password" id="password" name="password"><br><br>
<button type="submit">Login</button>
</form>
</body>
</html>
显示效果:
2.2 查询界面优化
优化后代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Query Interface</title>
<style>
body {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
height: 100vh;
margin: 0;
}
h2 {
text-align: center;
}
div {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
}
button {
padding: 10px 20px;
margin: 5px;
background-color: #007bff;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background-color: #0056b3;
}
textarea {
margin-top: 10px;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
}
</style>
</head>
<body>
<h2>Query Interface</h2>
<div>
<button onclick="queryData('query1')">Query 1</button>
<button onclick="queryData('query2')">Query 2</button>
<button onclick="queryData('query3')">Query 3</button>
<button onclick="queryData('query4')">Query 4</button>
</div>
<textarea id="result" rows="10" cols="50" readonly></textarea>
</body>
</html>
显示效果:
3、总结
本文阐述了CSS的基本语法,对上一篇文章设计的界面进行优化。