【CSS教程】农村小伙写出CSS完全教程帮助十万农村程序员就业迎娶白富美,出任CEO,登上人生巅峰

注:最后有面试挑战,看看自己掌握了吗

文章目录

  • 网页内容位置
  • 内容分块
  • 装饰网页元素
  • 一次装饰多个网页元素
  • 用单独文件装饰网页
  • 保持网页各客户端一致
  • 改背景色
  • 设计网页布局
  • 以比例设计盒子布局
  • 让盒子在中间,设置边距
  • 设置样式的另一种方式
  • 设置网页图片背景
  • 写网页内容
  • 把两行调到一行
  • 两个合到一行
  • 将一行的元素分开
  • 内容到侧边之间加空间
  • 设置字体
  • 后备字体
  • 设置斜体
  • 分界线
  • 字间距
  • 超链接颜色
  • 访问后超链接颜色
  • 鼠标悬停改颜色
  • 去除默认空间
  • 调整上下空间

网页内容位置

是时候添加一些菜单内容。 在现有的 body 元素里面添加一个 main 元素。 它最终将包含有关咖啡馆提供的咖啡和甜点的价格信息。

内容分块

section来分块

装饰网页元素

你可以在 style 元素中指定一个样式,并为此设置一个属性,像这样:

element {property: value;
}

通过设置 text-align 属性值为 center,让你的 h1 元素居中,

<style>h1 {text-align: center;}
</style>

一次装饰多个网页元素

<style>h1 {text-align: center;}h2 {text-align: center;}p {text-align: center;}</style>

你现在有三个样式完全相同的类型选择器。 你可以通过创建一个选择器列表将同一组样式添加到许多元素上。 每个选择器都用逗号分隔,如下所示:

selector1, selector2 {property: value;
}

删除三个现有的类型选择器,并将它们替换为一个选择器列表,该列表使 h1、h2 和 p 元素的文本居中。

用单独文件装饰网页

你已经通过在 style 标签内编写 CSS 来设置了三个元素的样式。 这样做可以,但由于会有更多的样式,最好把所有的样式放在一个单独的文件中并链接到它。

我们已经为你创建了一个单独的 styles.css 文件,并将编辑器视图切换到该文件。 你可以通过编辑器顶部的标签在不同的文件之间转换。

首先,将你创建的样式改写到 styles.css 文件中。 请确保排除开头和结尾的 style 标签。
现在你需要链接 styles.css 文件,以便再次应用这些样式。 在 head 元素中嵌套一个自闭合 link 元素。 给它一个 rel 属性,值为 stylesheet 和一个 href 属性,值为 styles.css。

 <head><meta charset="utf-8" /><title>Cafe Menu</title><link rel="stylesheet" href="styles.css"/></head>

保持网页各客户端一致

为了使页面样式在移动端看起来与在桌面或笔记本电脑上相似,你需要添加一个带有特殊 content 属性的 meta 元素。

在 head 元素中添加以下内容:

<meta name="viewport" content="width=device-width, initial-scale=1.0" />

改背景色

文本再次居中,因此指向 CSS 文件的链接是正常运行的。 将另一种样式添加到文件中,将 body 元素的 background-color 属性更改为 brown。

设计网页布局

div 元素主要用于设计布局,这与你迄今为止使用的其他内容元素不同。 在 body 元素内添加一个 div 元素,然后将所有其他元素移到新的 div 内。

<body><div><main><h1>CAMPER CAFE</h1><p>Est. 2020</p><section><h2>Coffee</h2></section></main></div></body>

以比例设计盒子布局

现在很容易看到文本在 div 元素内居中。 目前,div 元素的宽度以像素(px)为单位。 将 width 属性的值更改为 80%,使其为其父元素(body)的宽度的 80%。

让盒子在中间,设置边距

接下来,你要在水平方向上将 div 居中。 你可以通过把它的 margin-left 和 margin-right 属性设置为 auto 来做到这一点。 可以把页边距看作是元素周围不可见的空间。 使用这两个 margin 属性,将 div 元素置于 body 元素的中心。

设置样式的另一种方式

到目前为止,你一直在使用类型选择器来设置元素的样式。 class 选择器由前面带有一个点的名称定义,如下所示:

.class-name {styles
}

将现有的 div 选择器改为类选择器,用一个名为 menu 的类代替 div。

设置网页图片背景

由于咖啡馆主要销售的产品是咖啡,因此你可以使用咖啡豆的图像作为页面背景。

删除 body 类型选择器中的注释及其内容。 现在添加一个 background-image 属性并将其值设置为 url(https://cdn.freecodecamp.org/curriculum/css-cafe/beans.jpg)。

body {background-image: url(https://cdn.freecodecamp.org/curriculum/css-cafe/beans.jpg);
}

写网页内容

article 元素通常包含多个具有相关信息的元素。 在这个示例里,它将包含咖啡风味和该风味的价格。 在 article 元素中嵌套两个 p 元素。 第一个的文本应该是 French Vanilla,第二个的文本应该是 3.00。

把两行调到一行

这正是你想要的,但如果口味和价格在同一条线上,那就太好了。 p 元素是 块级 元素,因此它们占据了其父元素的整个宽度。

要将它们放在同一行,你需要对 p 元素应用一些样式,因此它们更像内联元素。 将值为 item 的 class 属性添加到 Coffee 标题下的第一个 article 元素。

两个合到一行

p 元素嵌套在具有 item 类属性的 article 元素中。 你可以使用名为 item 的 class 为嵌套在元素中任何位置的所有 p 元素设置样式,如下所示:

.item p { 
}

使用上面的选择器,添加一个值为 inline-block 的 display 属性,这样 p 元素更像是内联元素。

.item p {display: inline-block;
}

将一行的元素分开

这更接近了,但价格没有停留在右边的位置。 这是因为 inline-block 元素只占据其内容的宽度。 要将它们分散开,请将 width 属性添加到 flavor 和 price class 选择器,两个属性的值都是 50%。------------------------------行不通

好吧,那样做行不通。 给 p 元素添加 inline-block 样式,并将它们放置在代码中的单独行上,会在第一个 p 元素的右侧创建一个空格,导致第二个元素转移到下一行。 解决此问题的一种方法是使每个 p 元素的宽度略小于 50%。

将每个 class 的 width 值更改为 49%,看看会发生什么。----------可以

前面的方法是可行的,但是价格右侧仍有一点空格。

你可以继续尝试各种百分比的宽度。 当然,也可以删除 class 为 price 的 p 元素和 class 为 flavor 的 p 中间的换行,让它们在编辑器上显示在同一行。 确保两个元素之间没有空格。

内容到侧边之间加空间

你可以用各种 padding 属性给你的菜单在内容和侧面之间留一些空间。

给 menu 类一个 padding-left 和一个 padding-right,数值都是 20px。

.menu {width: 80%;background-color: burlywood;margin-left: auto;margin-right: auto;padding-left: 20px;padding-right: 20px;
}

由于菜单的所有 4 个边具有相同的内部间距,请继续删除四个属性并设置 padding 属性的值为 20px。

设置字体

你可以更改文本的 font-family,使其看起来与浏览器的默认字体不同。 每个浏览器都有一些可用的常用字体。

通过添加值为 sans-serif 的 font-family 属性来更改 body 中的所有文本。 这是一种相当常见的字体,易于阅读。
所有的文字都有相同的 font-family,这有点无聊。 你仍然可以让大部分文字都是 sans-serif ,只是用不同的选择器使 h1和 h2 元素不同。

对 h1 和 h2 元素进行样式设计,使这些元素的文本只使用 Impact 字体。

后备字体

你可以通过添加另一个用逗号分隔的字体名称来为 font-family 添加一个后备值。 Fallback 是在初始值找不到/无法使用的情况下使用的。

在 Impact 字体之后添加后备(fallback)字体serif。

body {background-image: url(https://cdn.freecodecamp.org/curriculum/css-cafe/beans.jpg);font-family: sans-serif;
}

设置斜体

分界线

你可以使用 hr 元素在不同内容的部分之间显示一个分隔符。

首先,在具有 established 类的 p 元素和第一个 section 之间添加一个 hr 元素。 注意:hr 元素是没有结束标签的。

注意到线条如何更粗了吗? 对于 hr 元素的所有边缘,名为 border-width 的属性的默认值为 1px。 通过将边框改为与背景相同的颜色,线条的总高度为 5px(3px 加上上下边框宽度 1px)。

将 hr 的 height 属性改为 2px,这样它的总高度就变成了 4px。

字间距

关注菜单上的项目和价格,每一行之间有相当大的差距。

定位所有嵌套在 class 名为 item 的元素中的 p 元素,并将它们的顶部和底部 margin 设置为 5px。

超链接颜色

链接在未点击状态下的默认颜色通常为蓝色。 已经在页面上被访问过的链接的默认颜色通常是紫色。

要使 footer 链接的颜色相同,无论是否已访问链接,请为锚元素(a)使用类型选择器,并将 color 属性设置为 black。

访问后超链接颜色

当链接被实际访问时,你可以使用类似 a:visited { propertyName: propertyValue; } 的 pseudo-selector 来更改链接的属性。

当用户访问链接时,将页脚 Visit our website 链接的颜色更改为 grey。

a:visited {color: grey;
}

鼠标悬停改颜色

当鼠标悬停在链接上时,你可以使用类似于 a:hover { propertyName: propertyValue; } 的 pseudo-selector 更改链接的属性。

当用户将鼠标悬停在页脚 Visit our website 链接上时,将其颜色更改为 brown。

a:hover {color: brown;
}

去除默认空间

菜单文本 CAMPER CAFE 的顶部空间与菜单底部的地址空间不同。 这是由于浏览器对 h1 元素有一些默认顶部 margin。

将 h1 元素的顶部 margin 更改为 0 以删除所有顶部 margin。

现在顶部的间隔看起来很好。 菜单底部地址下方的空间比菜单顶部和 h1 元素的空间大一点。

要减少地址 p 元素下方的默认 margin 空间,请创建一个名为 address 的 class 选择器,并为 margin-bottom 属性设置值 5px。

调整上下空间

如果 h2 元素及其相关图标之间的垂直空间更小,那就太好了。 h2 元素具有默认的顶部和底部 margin 空间,因此你可以将 h2 元素的底部 margin 更改为 0 或其他数字。

有一种更简单的方法,只需向 img 元素添加一个负的顶部 margin,以将它们从当前位置拉上来。 负值是通过在值前面添加 - 创建的。 要完成这个项目,请继续在 img 类型选择器中使用 25px 的负顶部 margin。


🌸I could be bounded in a nutshell and count myself a king of infinite space.
 特别鸣谢:木芯工作室
特别鸣谢:木芯工作室 、Ivan from Russia


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM基础篇-程序计数器

程序计数器 定义 Program Counter Register 程序计数器&#xff08;寄存器&#xff09; 作用:记住下一条jvm指令的执行地址特点 是线程私有的:每个线程都有自己的程序计数器不会存在内存溢出(规定) 作用 左侧:jvm指令 右侧:java代码 0: getstatic #20 // PrintSt…

【系统软件01】devtoolset离线安装gcc

【系统软件01】devtoolset离线安装gcc 一、SCL简介二、SCL源安装三、离线下载devtoolset1、Developer Toolset2、下载devtoolset-93、压缩devtoolset-9 三、离线安装devtoolset-9(gcc9.3)1、解压devtoolset-9.tar.gz2、安装devtoolset-9 四、设置环境变量(使用gcc9.3)1、当前窗…

DevOps-GitHub/GitLab

DevOps-GitHub/GitLab GitHub是一个开源代码托管平台。基于web的Git仓库&#xff0c;提供共有仓库和私有仓库&#xff08;私有仓库收费&#xff09;。 GitLab可以创建免费私有仓库。 GitHub 为了快速操作&#xff0c;这里对创建仓库以及注册不做说明。 首先再GitHub上创建一…

词典项目练习

思维导图 客户端 #include "head.h" //用户提示界面 void help_info1() {printf("\t-----------------------------------------------\n");printf("\t| HENRY 在线辞典 |\n");printf("\t|版本:0.0.1 …

华为开源自研AI框架昇思MindSpore应用案例:Vision Transformer图像分类

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 二、环境准备与数据读取三、模型解析Transformer基本原理Attention模块 Transformer EncoderViT模型的输入整体构建ViT 四、模型训练与推理模型训练模型验证模型推理 近些年&#xff0c;随着基于自注意&…

PP-Matting: AI高精度图像前景Matting,让抠图轻而易举

分割和Matting的一个重要区别是:分割返回的是像素分类标签,其结果是整型数据;而Matting返回的是属于前景或背景的概率P,从而在前景与背景交互区域产生渐变的效果,使得抠图更加自然。Matting分割模型训练完成后,对于原始图像每个位置上的像素,都将生成一个表示其前景透明…

创建维基WIKI百科和建立百度百科有何不同?

很多企业有出口业务&#xff0c;想在互联网上开展全球性网络营销&#xff0c;维基百科往往被认为是开展海外营销的第一站。其作用相当于开展国内网络营销的百度百科&#xff0c;经常有些企业给小马识途营销顾问提供的词条内容就是百度百科的内容&#xff0c;可事实上两个平台的…

ETHERNET/IP 转ETHERCAT连接倍福和欧姆龙PLC的配置方法

ETHERNET/IP和ETHERCAT是两种不同的协议&#xff0c;它们在工业生产中都有广泛的应用。然而&#xff0c;由于协议不同&#xff0c;这两种设备之间无法通讯&#xff0c;这给工业生产带来了很大的麻烦。而捷米JM-EIP-ECAT网关应运而生&#xff0c;它能够连接到ETHERNET/IP总线和E…

小研究 - JVM 垃圾回收方式性能研究(一)

本文从几种JVM垃圾回收方式及原理出发&#xff0c;研究了在 SPEC jbb2015基准测试中不同垃圾回收方式对于JVM 性能的影响&#xff0c;并通过最终测试数据对比&#xff0c;给出了不同应用场景下如何选择垃圾回收策略的方法。 目录 1 引言 2 垃圾回收算法 2.1 标记清除法 2.2…

【数据结构】栈(Stack)的实现 -- 详解

一、栈的概念及结构 1、概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在表尾进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出 LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈…

SpringBoot的pom文件、容器、组件

一、pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4…

求分享如何批量压缩视频的容量的方法

视频内存过大&#xff0c;不但特别占内存&#xff0c;而且还会使手机电脑出现卡顿的现象&#xff0c;除此之外&#xff0c;如果我们想发送这些视频文件可能还会因为内存太大无法发送。因此&#xff0c;我们可以批量地压缩视频文件的内存大小&#xff0c;今天小编要来分享一招&a…

聊聊原子弹之父:奥本海默

最近诺兰的电影奥本海默即将热映,其改编自Kai Bird和 Martin J. Sherwin的 2005 年Pulitzer Prize 获奖小说:“American Prometheus: The Triumph and Tragedy of J. Robert Oppenheimer”。这本小说作者研究奥本海默25年,才得以成形,可见奥神本人身上的故事曲折和传奇。 …

Arrays(数组)工具类

java.util.Arrays 是一个与数组相关的工具类&#xff0c;里面提供了大量静态方法&#xff0c;用来实现数组常见的操作。 Arrays.toString ( 数组名 )将参数数组变成字符串&#xff08;按照默认格式&#xff1a;[10, 20, 30]&#xff09;Array.sort ( 数组名 ) 按照默认升序&…

数据库索引优化与查询优化——醍醐灌顶

索引优化与查询优化 哪些维度可以进行数据库调优 索引失效、没有充分利用到索引-一索引建立关联查询太多JOIN (设计缺陷或不得已的需求) --SQL优化服务器调优及各个参数设置 (缓冲、线程数等)–调整my.cnf数据过多–分库分表 关于数据库调优的知识点非常分散。不同的 DBMS&a…

Pycharm工具Python开发自动添加注释(详细)

方法自动添加参数注释 定义了一个函数&#xff0c;在函数下面敲入了三个双引号后&#xff0c;enter回车并没有自动出现注释&#xff0c;如图&#xff1a; 解决办法 Pycharm中依次打开File —> Settings —> Tools —> Python Integrated Tools&#xff0c;如图&…

isp调试工具环境搭建及其介绍!

一、isp调试环境搭建&#xff1a; 后期调试isp&#xff0c;是在rv1126提供的RKISP2.x Tuner工具上进行调试&#xff0c;所以我们大前提必须要把这个环境和一些操作先搞熟悉来&#xff0c;后面有一些专用术语&#xff0c;我们遇到了再去看&#xff0c;现在专门看一些专用术语&am…

【TypeScript】类型声明及应用(二)

【TypeScript】类型声明及应用&#xff08;二&#xff09; 一、前言 TypeScript开发中需要对定义的变量指定类型&#xff0c;目前版本都支持哪些类型&#xff0c;每一个类型都有哪些含义&#xff0c;在这篇文章中&#xff0c;我们将会对其进行总结说明 二、JavaScript基本数据…

Scrapy和Selenium整合(一文搞定)

文章目录 前言一、开始准备1. 包管理和安装chrome驱动2. 爬虫项目的创建&#xff08;举个栗子&#xff09;3. setting.py的配置 二、代码演示1. 主爬虫程序2. 中间件的配置3. 定义item对象4. 定义管道 总结 前言 scrapy和selenium的整合使用 先定个小目标实现万物皆可爬&#…

Pycharm debug程序,跳转至指定循环条件/循环次数

在断点出右键&#xff0c;然后设置条件 示例 for i in range(1,100):a i 1b i 2print(a, b, i) 注意&#xff1a; 1、你应该debug断点在循环后的位置而不是循环上的位置&#xff0c;然后你就可以设置你的条件进入到指定的循环上了 2、设置条件&#xff0c;要使用等于符号…