CSS 对齐、组合选择符、伪类、伪元素、导航栏

一、CSS 对齐:

1)、元素居中对齐:

水平居中对齐一个元素,可以使用margin:auto,设置到元素的宽度将防止它溢出到容器的边缘。元素通过指定宽度,并将两边的空外边距平均分配。示例:

<style>

.center {

    margin: auto;

    width: 60%;

    border: 3px solid #73AD21;

    padding: 10px;

}

</style>

2)、文本居中对齐:

文本在元素内居中对齐,可以使用text-align:center。示例:

<style>

.center {

    text-align: center;

    border: 3px solid green;

}

</style>

3)、图片居中对齐:

图片居中对齐,可以使用margin:auto,并将它放到块元素中。示例:

<style>

img {

    display: block;

    margin: 0 auto;

}

</style>

4)、使用定位方式左右对齐:

使用position:absolute属性对齐元素。当使用position来对齐元素时,通常<body>元素会设置margin和padding。这样可以避免在不同的浏览器中出现可见的差异。示例:

<style>

body {

    margin: 0;

    padding: 0;

}

.container {

    position: relative;

    width: 100%;

}

.right {

    position: absolute;

    right: 0px;

    width: 300px;

    background-color: #b0e0e6;

}

</style>

5)、使用float方式左右对齐:

<style>

body {

    margin: 0;

    padding: 0;

}

.right {

    float: right;

    width: 300px;

    background-color: #b0e0e6;

}

</style>

6)、使用padding垂直居中对齐:

<style>

.center {

    padding: 70px 0;

    border: 3px solid green;

    text-align: center;

}

</style>

7)、使用line-height垂直居中:

<style>

.center {

    line-height: 200px;

    height: 200px;

    border: 3px solid green;

    text-align: center;

}

.center p {

    line-height: 1.5;

    display: inline-block;

    vertical-align: middle;

}

</style>

8)、使用position和transform垂直居中:

<style>

.center {

    height: 200px;

    position: relative;

    border: 3px solid green;

}

.center p {

    margin: 0;

    position: absolute;

    top: 50%;

    left: 50%;

    -ms-transform: translate(-50%, -50%);

    transform: translate(-50%, -50%);

}

</style>

二、CSS 组合选择符:

CSS组合选择符说明了两个选择器之间的关系。CSS组合选择符包含各种简单选择符的组合方式。在CSS3中包含了四种组合方式:后代选择器(以空格“ ”分隔);子元素选择器(以大于号“>”分隔);相邻兄弟选择器(以加号“+”分隔);普通兄弟选择器(以波浪号“~”分隔)。

1)、后代选择器:

后代选择器用于选取某元素的后代元素。示例:

<style>

div p

{

background-color:yellow;

}

</style>

2)、子元素选择器:

子元素选择器只能选择作为某元素直接/一级子元素的元素。示例:

<style>

div>p

{

background-color:yellow;

}

</style>

3)、相邻兄弟选择器:

相邻兄弟选择器可以选择紧接在另一个元素后的元素,且二者有相同父元素。示例:

<style>

div+p

{

background-color:yellow;

}

</style>

4)、普通兄弟选择器:

后续兄弟选择器选取所有指定元素之后的相邻兄弟元素。示例:

<style>

div~p

{

background-color:yellow;

}

</style>

三、CSS 伪类:

CSS伪类是用来添加一些选择器的特殊效果。伪类的语法:

selector:pseudo-class {property:value;}CSS类可以使用伪类:selector.class:pseudo-class {property:value;}

1)、Anchor伪类:

<style>

a:link {color:#0000FF;}       /* 未访问链接*/

a:visited {color:#000FF0;}   /* 已访问链接 */

a:hover {color:#FF0000;}   /* 鼠标移动到链接上 */

a:active {color:#000FFF;}   /* 鼠标点击时 */

</style>

2)、伪类可以与CSS类配合使用:

  1. red:visited {color:#FF0000;}
  2. <a class="red" href="css.html">CSS 语法</a>

3)、CSS:first-child伪类:

使用first-child伪类选择父元素的第一个子元素:

<style>

p:first-child

{

color:blue;

}

</style>

使用first-child伪类选择匹配所有<p>元素的第一个<i>元素:

<style>

p > i:first-child

{

color:blue;

}

</style>

使用first-child伪类选择匹配所有<p>元素的所有<i>元素:

<style>

p:first-child i

{

color:blue;

}

</style>

4)、CSS-:lang伪类:

:lang伪类可以为不同的语言定义特殊的规则。

<style>

q:lang(no)

{

quotes: "~" "~";

}

</style>

所有CSS伪类/元素:

选择器

示例

示例说明

:checked

input:checked

选择所有选中的表单元素

:disabled

input:disabled

选择所有禁用的表单元素

:empty

p:empty

选择所有没有子元素的p元素

:enabled

input:enabled

选择所有启用的表单元素

:first-of-type

p:first-of-type

选择的每个 p 元素是其父元素的第一个 p 元素

:in-range

input:in-range

选择元素指定范围内的值

:invalid

input:invalid

选择所有无效的元素

:last-child

p:last-child

选择所有p元素的最后一个子元素

:last-of-type

p:last-of-type

选择每个p元素是其母元素的最后一个p元素

:not(selector)

:not(p)

选择所有p以外的元素

:nth-child(n)

p:nth-child(2)

选择所有 p 元素的父元素的第二个子元素

:nth-last-child(n)

p:nth-last-child(2)

选择所有p元素倒数的第二个子元素

:nth-last-of-type(n)

p:nth-last-of-type(2)

选择所有p元素倒数的第二个为p的子元素

:nth-of-type(n)

p:nth-of-type(2)

选择所有p元素第二个为p的子元素

:only-of-type

p:only-of-type

选择所有仅有一个子元素为p的元素

:only-child

p:only-child

选择所有仅有一个子元素的p元素

:optional

input:optional

选择没有"required"的元素属性

:out-of-range

input:out-of-range

选择指定范围以外的值的元素属性

:read-only

input:read-only

选择只读属性的元素属性

:read-write

input:read-write

选择没有只读属性的元素属性

:required

input:required

选择有"required"属性指定的元素属性

:root

root

选择文档的根元素

:target

#news:target

选择当前活动#news元素(点击URL包含锚的名字)

:valid

input:valid

选择所有有效值的属性

:link

a:link

选择所有未访问链接

:visited

a:visited

选择所有访问过的链接

:active

a:active

选择正在活动链接

:hover

a:hover

把鼠标放在链接上的状态

:focus

input:focus

选择元素输入后具有焦点

:first-letter

p:first-letter

选择每个<p> 元素的第一个字母

:first-line

p:first-line

选择每个<p> 元素的第一行

:first-child

p:first-child

选择器匹配属于任意元素的第一个子元素的 <p> 元素

:before

p:before

在每个<p>元素之前插入内容

:after

p:after

在每个<p>元素之后插入内容

:lang(language)

p:lang(it)

为<p>元素的lang属性选择一个开始值

四、CSS 伪元素:

CSS伪元素是用来添加一些选择器的特殊效果。伪元素的语法:

selector:pseudo-element {property:value;}CSS类也可以使用伪元素:selector.class:pseudo-element {property:value;}

1)、firs-line伪元素用于向文本的首行设置特殊样式。firs-line伪元素只能用于块级元素。可应用于firs-line伪元素的属性:font properties、color properties background propertiesword-spacingletter-spacingtext-decorationvertical-aligntext-transformline-heightclear。示例:

  • <style>
  • p:first-line
  • {
  • color:#ff0000;
  • font-variant:small-caps;
  • }
  • </style>

2)、first-letter伪元素:

  • first-letter伪元素用于向文本的首字母设置特殊样式。first-letter伪元素只能用于块级元素。可应用于first-letter伪元素的属性:font properties、color propertiesbackground propertiesmargin propertiespadding propertiesborder propertiestext-decorationvertical-align (only if "float" is "none")text-transformline-heightfloatclear。示例:
  • <style>
  • p:first-letter
  • {
  • color:#ff0000;
  • font-size:xx-large;
  • }
  • </style>

3)、伪元素和CSS类:

  • 伪元素可以结合CSS类使用。示例:

p.article:first-letter {color:#ff0000;}

<p class="article">文章段落</p>

多个伪元素可以结合使用。示例:

<style>

p:first-letter

{

color:#ff0000;

font-size:xx-large;

}

p:first-line

{

color:#0000ff;

font-variant:small-caps;

}

</style>

4)、CSS-:before伪元素:

before伪元素可以在元素的内容前面插入新的内容。示例:

<style>

h1:before {content:url(smiley.gif);}

</style>

5)、CSS-:after伪元素:

after伪元素可以在元素的内容之后插入新的内容。示例:

<style>

h1:after {content:url(smiley.gif);}

</style>

所有CSS伪类/元素:

五、CSS 导航栏:

导航栏基本上是一个链接列表:

<ul>

<li><a href="#home">主页</a></li>

<li><a href="#news">新闻</a></li>

<li><a href="#contact">联系</a></li>

<li><a href="#about">关于</a></li>

</ul>

删除导航栏中的边距和填充:

style>

ul

{

list-style-type:none;

margin:0;

padding:0;

}

</style>

</head>

<body>

<ul>

<li><a href="#home">主页</a></li>

<li><a href="#news">新闻</a></li>

<li><a href="#contact">联系</a></li>

<li><a href="#about">关于</a></li>

</ul>

1)、垂直导航栏:

<style>

ul {

  list-style-type: none;

  margin: 0;

  padding: 0;

}

li a {

  display: block;

  width: 60px;

  background-color: #dddddd;

}

</style>

<ul>

<li><a href="#home">主页</a></li>

<li><a href="#news">新闻</a></li>

<li><a href="#contact">联系</a></li>

<li><a href="#about">关于</a></li>

</ul>

创建一个简单的垂直导航栏,在鼠标移动到选项时,改变颜色:

<style>

ul {

    list-style-type: none;

    margin: 0;

    padding: 0;

    width: 200px;

    background-color: #f1f1f1;

}

li a {

    display: block;

    color: #000;

    padding: 8px 16px;

    text-decoration: none;

}

/* 鼠标移动到选项上修改背景颜色 */

li a:hover {

    background-color: #555;

    color: white;

}

</style>

<ul>

<li><a href="#home">主页</a></li>

<li><a href="#news">新闻</a></li>

<li><a href="#contact">联系</a></li>

<li><a href="#about">关于</a></li>

</ul>

导航栏创建链接并添加边框:

<style>

ul {

    list-style-type: none;

    margin: 0;

    padding: 0;

    width: 200px;

    background-color: #f1f1f1;

    border: 1px solid #555;

}

li a {

    display: block;

    color: #000;

    padding: 8px 16px;

    text-decoration: none;

}

li {

    text-align: center;

    border-bottom: 1px solid #555;

}

li:last-child {

    border-bottom: none;

}

li a.active {

    background-color: #4CAF50;

    color: white;

}

li a:hover:not(.active) {

    background-color: #555;

    color: white;

}

</style>

<ul>

  <li><a class="active" href="#home">主页</a></li>

  <li><a href="#news">新闻</a></li>

  <li><a href="#contact">联系</a></li>

  <li><a href="#about">关于</a></li>

</ul>

创建一个左边为全屏高度固定导航栏,右边是可滚动的内容:

<style>

body {

    margin: 0;

}

ul {

    list-style-type: none;

    margin: 0;

    padding: 0;

    width: 25%;

    background-color: #f1f1f1;

    position: fixed;

    height: 100%;

    overflow: auto;

}

li a {

    display: block;

    color: #000;

    padding: 8px 16px;

    text-decoration: none;

}

li a.active {

    background-color: #4CAF50;

    color: white;

}

li a:hover:not(.active) {

    background-color: #555;

    color: white;

}

</style>

<body>

<ul>

  <li><a class="active" href="#home">主页</a></li>

  <li><a href="#news">新闻</a></li>

  <li><a href="#contact">联系</a></li>

  <li><a href="#about">关于</a></li>

</ul>

<div style="margin-left:25%;padding:1px 16px;height:1000px;">

<p>Some text..</p>

  <p>Some text..</p>

  <p>Some text..</p>

  <p>Some text..</p>

  <p>Some text..</p>

  <p>Some text..</p>

  <p>Some text..</p>

</div>

</body>

2)、水平导航栏:

有两种方法创建水平导航栏,使用内联或浮动的列表项。

内联列表项:

<style>

ul

{

list-style-type:none;

margin:0;

padding:0;

}

li

{

display:inline;

}

</style>

<body>

<ul>

<li><a href="#home">主页</a></li>

<li><a href="#news">新闻</a></li>

<li><a href="#contact">联系</a></li>

<li><a href="#about">关于</a></li>

</ul>

</body>

浮动列表项:

<style>

ul

{

list-style-type:none;

margin:0;

padding:0;

overflow:hidden;

}

li

{

float:left;

}

a

{

display:block;

width:60px;

background-color:#dddddd;

}

</style>

水平导航条:

<style>

ul {

    list-style-type: none;

    margin: 0;

    padding: 0;

    overflow: hidden;

    background-color: #333;

}

li {

    float: left;

}

li a {

    display: block;

    color: white;

    text-align: center;

    padding: 14px 16px;

    text-decoration: none;

}

li a:hover {

    background-color: #111;

}

</style>

<body>

<ul>

  <li><a class="active" href="#home">主页</a></li>

  <li><a href="#news">新闻</a></li>

  <li><a href="#contact">联系</a></li>

  <li><a href="#about">关于</a></li>

</ul>

</body>

链接右对齐:

.active {

    background-color: #4CAF50;

}

添加分割线:

li {

    float: left;

    border-right:1px solid #bbb;

}

li:last-child {

    border-right: none;

}

灰色水平导航栏:

<style>

ul {

    list-style-type: none;

    margin: 0;

    padding: 0;

    overflow: hidden;

    border: 1px solid #e7e7e7;

    background-color: #f3f3f3;

}

li {

    float: left;

}

li a {

    display: block;

    color: #666;

    text-align: center;

    padding: 14px 16px;

    text-decoration: none;

}

li a:hover:not(.active) {

    background-color: #ddd;

}

li a.active {

    color: white;

    background-color: #4CAF50;

}

</style>

<body>

<ul>

  <li><a class="active" href="#home">主页</a></li>

  <li><a href="#news">新闻</a></li>

  <li><a href="#contact">联系</a></li>

  <li><a href="#about">关于</a></li>

</ul>

</body>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql之子表查询、视图、连接查询

1、子查询返回的结果只能是某列&#xff0c;不能是多列。where条件in什么&#xff0c;子查询的列就是什么 &#xff08;1&#xff09;多表联查&#xff08;不要超过3张表&#xff09;重点 ①in包含 ②not in取反&#xff08;加上where条件过滤&#xff0c;否则没意义&#xff…

《嵌入式虚拟化技术与应用》:深入浅出阐述嵌入式虚拟机原理,实现“小而能”嵌入式虚拟机!

目录 关于博主前言专家推荐本书适合谁&#xff1f;内容简介书本目录权威作者团队其他 关于博主 &#x1f680;Python爬虫项目实战系列文章&#xff01;&#xff01; ⭐⭐欢迎订阅⭐⭐ 【Python爬虫项目实战一】获取Chatgpt3.5免费接口文末付代码&#xff08;过Authorization认…

uniapp 微信小程序 uni-file-picker上传图片报错 chooseAndUploadFile

这个问题真的很搞&#xff0c; 原因是微信开发者工具更新了&#xff0c;导致图片上传问题。 解决方法&#xff1a; 将微信开发者工具的基础库改为2.33.0一下即可。 在微信开发者工具详情 - 本地设置中&#xff08;记得点击‘推送’按钮&#xff09;&#xff1a;

双十一最值得买什么?双十一怎么买划算?数码年度好物盘点

​双11狂欢的号角已经吹响&#xff0c;各位小伙伴们是否已经做好了“冲锋”的准备&#xff1f;想必早已准备好了各种必买好物、囤货清单&#xff01;为了帮助大家更好地了解数码产品的优惠情况和推荐理由&#xff0c;我们为大家准备了一份双十一数码推荐&#xff0c;帮助大家在…

51单片机-定时计数器

文章目录 前言1 原理2.编程 前言 1 原理 2.编程 定时计算&#xff1a; 50ms501000us 一个机器周期&#xff1a;1.085us 65535 - 501000/1.08546082 故 40082*1.08549998.97 /*定时器1&#xff0c;定时模式 工作模式1 16位计数器&#xff0c; 定时20秒后使能蜂鸣器*/ #include…

Linux CentOS 8(HTTPS的配置与管理)

Linux CentOS 8&#xff08;HTTPS的配置与管理&#xff09; 目录 一、HTTPS 介绍二、SSL 证书的介绍三、实验配置 一、HTTPS 介绍 HTTPS 在 HTTP 的基础下加入 SSL&#xff0c;SSL 是“Secure Sockets Layer”的缩写&#xff0c;中文为“安全套接层”。因此 HTTPS 是以安全为目…

RabbitMQ 消息中间件 消息队列

RabbitMQ1、RabbitMQ简介2、RabbitMQ 特点3、什么是消息队列4、RabbiMQ模式5、集群中的基本概念 单实例安装RabbitMQ安装依赖安装erlang安装rabbitmq开启rabbitmq的web访问界面添加用户修改配置文件重启服务浏览器访问Rabbit-test rabbitMQ集群准备工作&#xff08;三台&#x…

rabbitmq下载安装教程

1.首先需要下载erlang和rabbitmq安装包&#xff1a; 官网下载比较慢&#xff0c;通过网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1fM2BrJqefyzUDZD4tfZLIg 提取码&#xff1a;5hsu 2.安装&#xff0c;傻瓜式安装就可以&#xff0c;可以自定义自己要安装的目…

SQL左连接实战案例

要求&#xff1a;用表df1和表df2的数据&#xff0c;得到df3 一、创建表 CREATE TABLE df1 (姓名 varchar(255) DEFAULT NULL,年龄 int DEFAULT NULL,部门 varchar(255) DEFAULT NULL,id int DEFAULT NULL );CREATE TABLE df2 (部门 varchar(255) DEFAULT NULL,年龄 int DEFAU…

探索环保葡萄酒之生物动力

根据生物动力农业和园艺协会的说法&#xff0c;生物动力农业是“一种精神-伦理-生态的农业、园艺、食品生产和营养方法。”生物动力农民将他们的农场或葡萄园视为一个坚固的有机体&#xff0c;一个自我维持的生态系统。这些农业哲学和实践在整个农业周期中应用了一种整体方法。…

【达梦数据库】学习笔记

【达梦数据库】学习笔记 【一】如何使用idea连接达梦数据库【二】idea项目导入本地的达梦数据库驱动jar包&#xff08;方法一&#xff09;【三】idea项目把本地的达梦数据库驱动jar包安装到本地仓库&#xff08;方法二&#xff09; 【一】如何使用idea连接达梦数据库 &#xf…

电脑出现“此驱动器存在问题请立即扫描”该怎么办?

在您将可移动设备&#xff08;例如&#xff1a;U盘、移动硬盘&#xff09;连接到计算机时&#xff0c;您可能会收到一条错误消息“此驱动器存在问题请立即扫描并修复问题”。收到此错误消息后&#xff0c;您的设备在大多数情况下将无法访问。那么&#xff0c;电脑出现“此驱动器…

聊一聊 tcp/ip 在.NET故障分析的重要性

一&#xff1a;背景 1. 讲故事 这段时间分析了几个和网络故障有关的.NET程序之后&#xff0c;真的越来越体会到计算机基础课的重要&#xff0c;比如 计算机网络 课&#xff0c;如果没有对 tcpip协议 的深刻理解&#xff0c;解决这些问题真的很难&#xff0c;因为你只能在高层…

【案例分享】IPSec VPN与NQA联动实现主备对等体和主备链路快速切换

【赠送】IT技术视频教程&#xff0c;白拿不谢&#xff01;思科、华为、红帽、数据库、云计算等等_厦门微思网络的博客-CSDN博客文章浏览阅读410次。风和日丽&#xff0c;小微给你送福利~如果你是小微的老粉&#xff0c;这里有一份粉丝福利待领取...如果你是新粉关注到了小微&am…

终身成就奖!中国出了个世界级管理思想家

北京时间11月7日,Thinkers50在英国伦敦颁出其最高奖项——终身成就奖,海尔集团创始人、董事局名誉主席张瑞敏成为唯一获奖者。 Thinkers50即“全球最具影响力的50大管理思想家”,是全球首个管理思想家排行榜,被誉为“商业思想界的奥斯卡”。作为权威的国际性评选,Thinkers50自2…

centos中安装的goland配置sdk报错:所选的目录不是Go SDK的有效主路经

选中目录后一直报错&#xff1a; 正确的位置&#xff1a; 原因竟然是使用 解压go1.21.4.linux-amd64.tar.gz 包出来&#xff0c;少了scr和test目录&#xff0c;重新解压后可以正确设定SDK主目录。 有同样问题的可以确认一下。 tar -C /usr/local -zxvf go1.19.2.linux-amd64.…

CentOS7 安装Jenkins 2.414.3 详细教程

目录 1、前提条件硬件软件-java11安装 2、安装jenkins3、启动jenkins配置用户和用户组配置JAVA_HOME 4、配置Jenkins一直处于启动状态5、测试Jenkins是否可以访问以及配置6、访问Jenkins系统 1、前提条件 硬件 内存 4G ; 硬盘 20G 软件-java11安装 上传文件jdk-11.0.21_lin…

Visual Studio 2017附加依赖项

在读韩国人尹圣雨的《TCP/IP网络编程》,在书中教我如何在Visual Studio 2008中设置附加依赖项&#xff0c;但是我使用的是Visual Studio 2017&#xff0c;所以我写下这篇文章学习如何在Visual Studio 2017附加依赖项。 在项目这里选择属性。 选择输入这一项&#xff0c;然后点…

RabbitMQ集群

RabbitMQ概述 1.RabbiMQ简介 RabbiMQ是⽤Erang开发的&#xff0c;集群⾮常⽅便&#xff0c;因为Erlang天⽣就是⼀⻔分布式语⾔&#xff0c;但其本身并不⽀持负载均衡。支持高并发&#xff0c;支持可扩展。支持AJAX&#xff0c;持久化&#xff0c;用于在分布式系统中存储转发消…

json数据格式的理解(前+后)

什么是JSON&#xff1a; JSON&#xff08;JavaScript Object Notation&#xff09;是一种广泛使用的数据交换格式&#xff0c;它在前端和后端开发中都扮演着重要的角色。 JSON 的结构&#xff1a; JSON 数据由大括号 {} 包围&#xff0c;表示对象。 对象中的数据以键值对形式…