这是我在 freecodecamp.one 上学习遇到的问题以及值得记录的点。
该标签用与在 <body>
标签内标识出“内容主体”,因为同时还会有 <nav>、<header>、<footer>
等标签,把页面主体内容写在 <main>
标签中,有这样搜索引擎进行检索,它只应包含与页面中心主题相关的信息,而不应包含如导航连接、网页横幅等可以在多个页面中重复出现的内容。
main
标签的语义化特性可以使辅助技术快速定位到页面的主体。有些页面中有 “跳转到主要内容” 的链接,使用 main
标签可以使辅助设备自动获得这个功能。例子如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Using main</title>
</head>
<body>
<header>My page</header>
<nav>
[url=#]Home[/url]
</nav>
<main>
<article>
<h1>My article</h1>
Content
</article>
<aside>
More information
</aside>
</main>
<footer>Copyright 2013</footer>
</body>
</html>
target 属性规定在何处打开被链接文档。只能在 href 属性存在时使用。
<a href="http://www.w3school.com.cn" target="_blank">Visit W3School</a>
值 | 描述 |
---|---|
_blank | 在新窗口中打开被链接文档。 |
_self | 在被点击时的同一框架中打开被链接文档(默认)。 |
_parent | 在父框架中打开被链接文档。 |
_top | 在窗口主体中打开被链接文档。 |
<br>
标签是空标签(意味着它没有结束标签,因此这是错误的:<br></br>
)。在 XHTML 中,把结束标签放在开始标签中,也就是 <br />
。
<meta>
元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词。
在 <style></style>
区域,这么写:
<style>
.red-text {
color: red;
}
</style>
在 <body></body>
区域,这么写:
<body>
<h2 class="red-text"> 2333 </h2>
</body>
在 <style>
标签里面声明的 class
顺序十分重要。第二个声明始终优于第一个声明。因为 .blue-text
在 .pink-text
的后面声明,所以 .blue-text
会覆盖 .pink-text
的样式。
在 <style>
标签之前(或者顶部),写下:
<link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet" type="text/css">
可以去 Google 免费字体库 中找一些自己需要的字体。
所有浏览器都有几种默认的字体,包括但不限于:monospace
, serif
, sans-serif
, Helvetica
等。
当我们引用外部字体却因为某些原因导致字体加载失败时,可以采用“字体降级”:
p {
font-family: Lobster, sans-serif;
}
当找不到 Lobster
字体时,将自动降级为 sans-serif
,但如果设备中已经安装了 Lobster
字体,则不会降级,因为浏览器会找到这个字体(目前暂不知道浏览器怎么寻找字体)。
.image {
border-radius: 50%;
}
在 CSS 里,id
不可以重用,只应用于一个元素上且id
的优先级要高于 class
,如果一个元素同时应用了 class
和 id
,并设置样式有冲突,会优先应用id
的样式。
#cat-photo-element {
background-color: green;
}
padding
控制着元素内容与border之间的空隙大小。margin
(外边距)控制元素的边框与其他元素之间的距离。
[type='checkbox'] {
margin: 10px 0 15px 0px
}
这样就把 type
类型为 checkbox
的复选框一同进行设置了。
<form action="/submit-cat-photo" id="cat-photo-form">
<label><input type="radio" name="indoor-outdoor">室内</label>
<label><input type="radio" name="indoor-outdoor">室外</label><br>
<label><input type="checkbox" name="personality">忠诚</label>
<label><input type="checkbox" name="personality">懒惰</label>
<label><input type="checkbox" name="personality">积极</label><br>
<input type="text" placeholder="猫咪图片地址" required>
<button type="submit">提交</button>
</form>
在很多时候,你使用 CSS 库,有时候它们声明的样式会意外的覆盖你的 CSS 样式。当你需要保证你的 CSS 样式不受影响,你可以使用 !important
:
.pink-text {
color: pink !important;
}
单位长度的类型可以分成 2 种,一种是相对的,一种是绝对的。例如,in
和 mm
分别代表着英寸和毫米。绝对长度单位会接近屏幕上的实际测量值,不过不同屏幕的分辨率会存在差异,可能会导致一些误差。
相对单位长度,就像 em
和 rem
,它们会依赖其他长度的值。就好像 em
的大小基于元素的字体的 font-size
值,如果你使用 em
单位来设置 font-size
值,它的值会跟随父元素的 font-size
值来改变。
创建一个 CSS 变量,你只需要在变量名前添加两个破折号,并为其赋值,例子如下:
--penguin-skin: gray;
这样会创建一个 --penguin-skin
变量并赋值为 gray
(灰色)。
创建变量后,CSS 属性可以通过引用变量名来使用它的值。
background: var(--penguin-skin);
使用变量来作为 CSS 属性值的时候,可以设置一个备用值来防止由于某些原因导致变量不生效的情况。
或许有些人正在使用着不支持 CSS 变量的旧浏览器,又或者,设备不支持你设置的变量值。为了防止这种情况出现,那么你可以这样写:
background: var(--penguin-skin, black);
这样,当你的变量有问题的时候,它会设置你的背景颜色为黑色。
就像 html
是 body
的容器一样,你也可以认为 :root
元素是你整个 HTML
文档的容器。在 :root
创建的变量,在整个网页里面都能生效。
<style>
:root {
/* add code below */
--penguin-belly: pink;
/* add code above */
}
</style>
当你在:root里创建变量时,这些变量的作用域是整个页面。如果在元素里创建相同的变量,会重写:root变量设置的值。
CSS 变量可以简化媒体查询的方式。例如,当屏幕小于或大于媒体查询所设置的值,通过改变变量的值,那么应用了变量的元素样式都会得到响应修改:
@media (max-width: 350px) {
:root {
/* add code below */
--penguin-size: 200px;
--penguin-skin: black;
/* add code above */
}
}
-
text-align: justify;
可以让除最后一行之外的文字两端对齐,即每行的左右两端都紧贴行的边缘。 -
text-align: center;
可以让文本居中对齐。 -
text-align: right;
可以让文本右对齐。 -
text-align: left;
是text-align
的默认值,它可以让文本左对齐。
你可以使用 strong
标签来加粗文字。添加了 strong
标签后,浏览器会自动给元素应用 font-weight:bold;
。
你可以使用u标签来给文字添加下划线。添加了 u
标签后,浏览器会自动给元素应用 text-decoration: underline;
。
你可以使用 em
标签来强调文本。由于浏览器会自动给元素应用 font-style: italic;
,所以文本会显示为斜体。
你可以用 s
标签来给文字添加删除线,它代表着这段文字不再有效。添加了 s
标签后,浏览器会自动给元素应用text-decoration: line-through;
。
你可以用 hr
标签来创建一条宽度撑满父元素的水平线。它一般用来表示文档主题的改变,在视觉上将文档分隔成几个部分。在 HTML
里,hr
是自关闭标签,所以不需要一个单独的关闭标签。
CSS
里面的 text-transform
属性来改变英文中字母的大小写。它通常用来统一页面里英文的显示,且无需直接改变 HTML
元素中的文本。下面的表格展示了 text-transform
的不同值对文字 “Transform me” 的影响。
Value | Result |
---|---|
lowercase | "transform me" |
uppercase | "TRANSFORM ME" |
capitalize | "Transform Me" |
initial | 使用默认值 |
inherit | 使用父元素的text-transform值。 |
none | Default:不改变文字。 |
font-weight
属性用于设置文本中所用的字体的粗细。
CSS 提供 line-height
属性来设置行间的距离。行高,顾名思义,用来设置每行文字所占据的垂直空间。
比如,超链接可以使用 :hover
伪类选择器定义它的悬停状态样式。下面是悬停超链接时改变超链接颜色的 CSS:
a:hover {
color: red;
}
在 CSS 里一切 HTML 元素皆为盒子,也就是通常所说的 盒模型。块级元素自动从新的一行开始(比如标题、段落以及 div),行内元素(也称:内联元素)排列在上一个元素后(比如图片以及 span)。元素默认按照这种方式布局称为文档的普通流,同时 CSS 提供了 position
属性来覆盖它。
p {
position: relative;
bottom: 10px;
}
CSS position
属性的取值选项 absolute
,absolute
相对于其包含块定位。和 relative
定位不一样,absolute
定位会将元素从当前的文档流里面移除,周围的元素会忽略它。可以用 CSS 的 top
、bottom
、left
和 right
属性来调整元素的位置。
absolute
定位比较特殊的一点是元素的定位参照于最近的已定位祖先元素。如果它的父元素没有添加定位规则(默认是position:relative;
),浏览器会继续寻找直到默认的 body
标签。
fixed
定位,它是一种特殊的绝对(absolute)定位,区别是其包含块是浏览器窗口。和绝对定位类似,fixed
定位使用 top
、bottom
、left
和 right
属性来调整元素的位置,并且会将元素从当前的文档流里面移除,其它元素会忽略它的存在。
fixed
定位和 absolute
定位的最明显的区别是 fixed
定位元素不会随着屏幕滚动而移动。
浮动元素不在文档流中,它向左或向右浮动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。通常需要用 width
属性来指定浮动元素占据的水平空间。
在 HTML 里后出现的元素会默认显示在更早出现的元素的上面。你可以使用 z-index
属性指定元素的堆叠次序。z-index
的取值是整数,数值大的元素优先于数值小的元素显示。
一种常见的实现方式是把块级元素的 margin
值设置为 auto
。同样的,这个方法也对图片奏效。图片默认是内联元素,但是可以通过设置其 display
属性为 block
来把它变成块级元素。
background: linear-gradient(45deg, #CCFFFF, #FFCCCC);
background: repeating-linear-gradient(
45deg,
yellow 0px,
yellow 40px,
black 40px,
black 80px
);
终于明白了公司内网上标记名字的背景图像是怎么做的了
background: url(https://i.imgur.com/MJAkxbh.png);
transform: scale(1.5);
div:hover {
transform: scale(1.1);
}
transform: skewX(24deg);
transform: skewY(-10deg);
blur-radius
=> 模糊半径,spread-radius
=> 辐射半径,transparent
=> 透明的,border-radius
=> 圆角边框
background-color: transparent;
border-radius: 50%;
box-shadow: 25px 10px 0px 0px green;
<style>
<!-- 先画一个正方形 -->
.heart {
position: absolute;
margin: auto;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: pink;
height: 50px;
width: 50px;
transform: rotate(-45deg);
}
<!-- 再画一个圆形在左上角 -->
.heart:after {
background-color: pink;
content: "";
border-radius: 50%;
position: absolute;
width: 50px;
height: 50px;
top: 0px;
left: 25px;
}
<!-- 再画一个圆形右上角 -->
.heart:before {
content: "";
background-color: pink;
border-radius: 50%;
position: absolute;
width: 50px;
height: 50px;
top: -25px;
left: 0px;
}
</style>
<div class = "heart"></div>
#anim {
animation-name: colorful;
animation-duration: 3s;
}
@keyframes colorful {
0% {
background-color: blue;
}
100% {
background-color: yellow;
}
}
动画在持续时间之后重置了,所以按钮又变成了之前的颜色。如果我们想要的效果是按钮在悬停时始终高亮。
animation-fill-mode: forwards;
animation-iteration-count: infinite;
animation-timing-function: ease-out;
<img src="samuraiSwords.jpeg" alt="这里填写图片描述信息">
<audio controls>
<source src="https://s3.amazonaws.com/freecodecamp/screen-reader.mp3" type="audio/mpeg" />
</audio>
label
元素不会向用户呈现任何特殊效果。不过,它为鼠标用户改进了可用性。如果您在 label
元素内点击文本,就会触发此控件。就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控件上。前提得跟表单内的输入组件 id 相同,例如:
<form>
<label for="name">Name:</label>
<input type="text" id="name" name="name">
</form>
<sup>
标签可定义上标文本。
包含在 <sup>
标签和其结束标签 </sup>
中的内容将会以当前文本流中字符高度的一半来显示,但是与当前文本流中文字的字体和字号都是一样的。
<p tabindex = "0">Instructions: Fill in ALL your information then click <b>Submit</b></p>
这样就会当用户使用 tab
键进行切换时,会把键盘焦点聚集在该标签上。
设备的高度小于或等于 800p
x 时,p
标签的 font-size
为 12px
的媒体查询:
@media (min-height: 800px) {
p {
font-size: 12px;
}
}
@media (max-height: 800px) {
p {
font-size: 12px;
}
}
视窗单位相对于设备的视窗尺寸 (宽度或高度) ,百分比是相对于父级元素的大小。
四个不同的视窗单位分别是:
- vw:如 10vw 的意思是视窗宽度的 10%。
- vh: 如 3vh 的意思是视窗高度的 3%。
- vmin: 如 70vmin 的意思是视窗中较小尺寸的 70% (高度 VS 宽度)。
- vmax: 如 100vmax 的意思是视窗中较大尺寸的 100% (高度 VS 宽度)。