20201207学习日记

想学习“世界上最好的语言” PHP,想从前端三大件入门。前些时间看了一些html基础,今日看了一下CSS。希望能快点进入JavaScript的学习。

写在前面

由于未深入到具体项目层次,仅于W3C中简要习得一些基本的标记,勿喷

CSS基础语法

选择器
1
selector {declaration1; declaration2; ... declarationN }

选择器通常是您需要改变样式的 HTML 元素。
每条声明由一个属性和一个值组成。
属性(property)是您希望设置的样式属性(style attribute)。每个属性有一个值。属性和值被冒号分开。这也很像html里面的“value:key”方式。

1
selector {property: value}

下面这行代码的作用是将 h1 元素内的文字颜色定义为红色,同时将字体大小设置为 14 像素。
在这个例子中,h1 是选择器,color 和 font-size 是属性,red 和 14px 是值。

1
h1 {color:red; font-size:14px;}

CSS 语法

选择器的分组

可以对选择器进行分组,这样,被分组的选择器就可以分享相同的声明。

1
2
3
h1,h2,h3,h4,h5,h6 {
color: green;
}

(在模板里面经常见到这种用法(或者使用bootstrap等的时候))
其中有关继承的问题,比方说子元素继承父元素的属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<style>
.generate{
color: red;
}
</style>
</head>
<body>
<div class="generate">
<p>
this is a paragraph
</p>
</div>
</body>
</html>

这样的话<p>就会显示为红色。

派生选择器

我希望列表中的 strong 元素变为斜体字,而不是通常的粗体字,可以这样定义一个派生选择器:

1
2
3
4
li strong {
font-style: italic;
font-weight: normal;
}
1
2
3
4
5
<p><strong>我是粗体字,不是斜体字,因为我不在列表当中,所以这个规则对我不起作用</strong></p>
<ol>
<li><strong>我是斜体字。这是因为 strong 元素位于 li 元素内。</strong></li></font>
<li>我是正常的字体。
</ol>

在上面的例子中,只有 li 元素中的 strong 元素的样式为斜体字,无需为 strong 元素定义特别的 class 或 id,代码更加简洁。

id 选择器

下面的两个 id 选择器,第一个可以定义元素的颜色为红色,第二个定义元素的颜色为绿色:

1
2
#red {color:red;}
#green {color:green;}

下面的 HTML 代码中,id 属性为 red 的 p 元素显示为红色,而 id 属性为 green 的 p 元素显示为绿色。

1
2
<p id="red">这个段落是红色。</p>
<p id="green">这个段落是绿色。</p>

在现代布局中,id 选择器常常用于建立派生选择器。

1
2
3
4
5
#sidebar p {
font-style: italic;
text-align: right;
margin-top: 0.5em;
}

上面的样式只会应用于出现在 id 是 sidebar 的元素内的段落。

类选择器

终于到最重要的部分了,可能也是最主要需要用到的部分。

在 CSS 中,类选择器以一个点号显示:

1
.center {text-align: center}

在上面的例子中,所有拥有 center 类的 HTML 元素均为居中。

在下面的 HTML 代码中,h1 和 p 元素都有 center 类。这意味着两者都将遵守 “.center” 选择器中的规则。(摘自w3c)

1
2
3
4
5
6
7
<h1 class="center">
This heading will be center-aligned
</h1>

<p class="center">
This paragraph will also be center-aligned.
</p>

和 id 一样,class 也可被用作派生选择器:

1
2
3
4
.fancy td {
color: #f60;
background: #666;
}

CSS创建

大多数css早已分文件编写(外部样式表)。如果用于调整一个地方,使用内链样式表未尝不是一个做法吧。(我经常这样)

外部样式表

可以用<link>标签链接外部样式表。

1
2
3
4
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css"/>
</head>

内部样式表

当单个文档需要特殊的样式时,就应该使用内部样式表。可以使用<style> 标签在文档头部定义内部样式表,就像这样:

1
2
3
4
5
6
<head>
<style type="text/css">
hr {color: sienna;}
p {margin-left: 20px;}
</style>
</head>
内联样式

style也可以作为标签的一个属性,不过需要慎用。

1
2
3
<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>
多重样式

三种声明方式可以一起用,比方说可以单独修改某个样式,优先级为内联>内部>外联样式表。

写在后面

之前试过客户端和后端云交换数据,没试过html和js的交互。浅尝了前面的Hyper Text Markup Language以及CSS后(当然如今的html5和CSS3提供了许多新的features,还有许多的plugins等着我去发掘),很期待之后JS的学习,体验这样的一门脚本语言。