CSS-基础
css笔记
其他
CSS 实现聊天对话框一左一右排列
关键点:
1、默认是靠左排列的,所以接收消息 div 不用特别设置,增加一个 margin-right: 20%;
限制对话框宽度,右侧留白 20%。
2、发送的消息 div 需要靠右,通过 margin-left:auto;
实现,margin 不设置的话默认是0(就是紧挨着),设置为 auto 会占据全部剩余空间。所以 margin-left 设为 auto 就实现了左外边框将左侧剩余空间全部占满,也就靠右显示了。
3、height 设为 auto,可以实现 div 高度根据内部文字多少自动撑开。
4、width 设为 fit-content 可实现每个对话框宽度也有内部文字自动撑开。
<style type="text/css">
.div-received-single-msg {
/* 接收到的消息靠左显示,右margin留出20% */
margin-right: 20%;
height:auto;
width:fit-content;
margin-top: 3px;
margin-left: 2px;
text-align: left;
border:1px solid #000;
border-radius: 5px;
}
.div-send-single-msg {
/* 发送的消息靠右显示,margin-left设为auto,自动占据剩余全部宽度*/
margin-left:auto;
height:auto;
width:fit-content;
margin-top: 3px;
margin-right: 2px;
text-align: right;
border:1px solid #000;
border-radius: 5px;
}
</style>
iframe 自适应宽高
<div class="div-iframe">
<iframe src="http://grafana.masikkk.com/d/xfpJB9FGz/node-exporter-dashboard-en-20201010-starsl-cn?orgId=1&refresh=30s&theme=light&kiosk"
frameborder="0" class="iframe-grafana" >
</iframe>
</div>
<style type="text/css">
.div-iframe {
position: relative;
width: 100%;
padding-top: calc(100% * 720 / 1280);
border: 1px rgb(77, 197, 240) solid;
}
.iframe-grafana {
position: absolute;
width: 100%;
height: 100%;
top: 0;
}
</style>
优雅的实现 iframe 高宽度自适应
https://youwu.today/skill/web/how-to-make-the-iframe-responsive/
css隐藏元素
visibility:hidden
visibility:hidden
可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。
display:none
display:none
可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。
aria-hidden
现代的辅助技术能够识别并朗读由 CSS 生成的内容和特定的 Unicode 字符。为了避免 屏幕识读设备抓取非故意的和可能产生混淆的输出内容(尤其是当图标纯粹作为装饰用途时),我们为这些图标设置了 aria-hidden="true"
属性。
换行
word-wrap:break-word;自动换行
自动换行p { word-wrap:break-word; }
word-break:break-all;强制换行
强制英文单词断行p { word-break:break-all; }
注意:设置强制将英文单词断行,需要将行内元素设置为块级元素。
white-space:nowrap强制不换行
强制不换行p { white-space:nowrap; }
page-break-after 强制分页
page-break-after 用于在指定元素后面插入分页符。
在想要分页的地方插入一个指定了强制分页的 div 即可。
<div style="page-break-after: always;"></div>
border-radius 圆角边框
border-radius 用于向 div 元素添加圆角边框border-radius
属性是一个简写属性,用于设置四个 border-*-radius
属性。
border-radius:2em;
等价于
border-top-left-radius:2em;
border-top-right-radius:2em;
border-bottom-right-radius:2em;
border-bottom-left-radius:2em;
CSS首字母大写text-transform
有的时候需要让英文单词或拼音首个字母大写;有的时候需要让全文中英文单词全大写或小写。这时候我们就需要text-transform属性了。
/*首字母大写*/
.a {text-transform:capitalize;}
/*全都是大写*/
.b {text-transform:uppercase;}
/*全都是小写*/
.c {text-transform:lowercase;}
float属性
定义和用法
float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。
如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。
注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。
<div style="float:left;text-align:center;"><img src="https://www.zybuluo.com/static/img/logo.png" alt="提示语"><br/>Markdown Logo</div>
<div style="float:left;text-align:center;"><img src="https://www.zybuluo.com/static/img/logo.png" alt="提示语"><br/>Markdown Logo</div>
<div style="clear:both;"></div>
Markdown Logo
Markdown Logo
CSS float 属性
http://www.w3school.com.cn/cssref/pr_class_float.asp
DIV设置浮动float以后下一个DIV要换行的方法
http://www.cnblogs.com/mq0036/p/4604443.html
@media 媒体查询
媒体查询包含一个可选的媒体类型和媒体特性表达式(0或多个)最终会被解析为true或false。
如果媒体查询中指定的媒体类型匹配展示文档所使用的设备类型,并且所有的表达式的值都是true,那么该媒体查询的结果为true。
使用方式:
<!-- link元素中的CSS媒体查询 -->
<link rel="stylesheet" media="(max-width: 800px)" href="example.css" />
<!-- 样式表中的CSS媒体查询 -->
<style>
@media (max-width: 600px) {
.facet_sidebar {
display: none;
}
}
</style>
使用 @media 查询,你可以针对不同的媒体类型定义不同的样式。
@media 可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media 是非常有用的。
当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。
媒体类型
- all 所有媒体
- braille 盲文触觉设备
- embossed 盲文打印机
- print 手持设备
- projection 打印预览
- screen 彩屏设备
- speech ‘听觉’类似的媒体类型
- tty 不适用像素的设备
- tv 电视
1、仅在可视区域宽度不小于700像素并在横屏时有效:
@media (min-width: 700px) and (orientation: landscape) {
}
2、仅在电视媒体上,可视区域不小于700像素宽度并且是横屏时有效:
@media tv and (min-width: 700px) and (orientation: landscape) {
}
3、最小宽度为700像素或是横屏的手持设备上:
@media (min-width: 700px), handheld and (orientation: landscape) {
}
媒体查询中使用逗号分隔效果等同于or
逻辑操作符
CSS媒体查询
https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Media_queries
如何使用CSS样式
外部样式表
当样式需要被应用到很多页面的时候,外部样式表将是理想的选择。使用外部样式表,你就可以通过更改一个文件来改变整个站点的外观。每个页面使用 <link>
标签链接到样式表。<link>
标签在(文档的)头部:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
浏览器会从文件 mystyle.css 中读到样式声明,并根据它来格式文档。
外部样式表可以在任何文本编辑器中进行编辑。文件不能包含任何的 html 标签。样式表应该以 .css 扩展名进行保存。下面是一个样式表文件的例子:
hr {color: sienna;}
p {margin-left: 20px;}
body {background-image: url("images/back40.gif");}
内部样式表
当单个文件需要特别样式时,就可以使用内部样式表。你可以在head
部分通过<style>
标签定义内部样式表。
<head>
<style type="text/css">
body {background-color: red}
p {margin-left: 20px}
</style>
</head>
内联样式
当特殊的样式需要应用到个别元素时,就可以使用内联样式。 使用内联样式的方法是在相关的标签中使用样式属性。样式属性可以包含任何 CSS 属性。以下实例显示出如何改变段落的颜色和左外边距。
<p style="color: red; margin-left: 20px">
This is a paragraph
</p>
层叠次序
一般而言,所有的样式会根据下面的规则层叠于一个新的虚拟样式表中,从1到4优先级逐渐提高,内联样式拥有最高的优先权。
- 浏览器缺省设置
- 外部样式表
- 内部样式表(位于
<head>
标签内部) - 内联样式(在 HTML 元素内部)
因此,内联样式(在 HTML 元素内部)拥有最高的优先权,这意味着它将优先于以下的样式声明:<head>
标签中的样式声明,外部样式表中的样式声明,或者浏览器中的样式声明(缺省值)。
CSS基础语法
CSS规则由两个主要的部分构成:选择器,以及一条或多条声明,每个声明的格式为:属性名:属性值。
语法:selector {property: value; ...; property: value; }
使用花括号来包围声明,每条声明以分号”;”结尾。
例如:h1 {color:red; font-size:14px;}
上面代码的作用是将 h1 元素内的文字颜色定义为红色,同时将字体大小设置为 14 像素。
在这个例子中,h1 是选择器,color 和 font-size 是属性,red 和 14px 是值。
错误声明会被自动忽略
如果在一个声明中使用了不正确的属性值,或者不正确的属性,则该条声明会被忽略掉。
举个不正确的例子:
p {
background-color: red
font-family: 黑体;
wordsize: 20px;
float: left;
}
上面的例子第一条声明漏掉了分号,以上声明块会被解析为:
p {
background-color: red font-family: 黑体;
wordsize: 20px;
float: left;
}
“red font-family: 黑体” 整个会被解析为background-color的属性值,这当然不是一个合法的属性值,该条声明将会被忽略掉。另外第二条声明使用了不正确的属性名wordsize,该条声明也将会忽略掉,结果只会正确处理第三条声明,等价于:
p {float: left;}
值为多个词要加引号
如果值为若干单词,则要给值加引号:p {font-family: "sans serif";}
多重声明用分号分隔
如果要定义不止一个声明,则需要用分号将每个声明分开。
下面的例子展示出如何定义一个红色文字的居中段落。最后一条规则是不需要加分号的,因为分号在英语中是一个分隔符号,不是结束符号。然而,大多数有经验的设计师会在每条声明的末尾都加上分号,这么做的好处是,当你从现有的规则中增减声明时,会尽可能地减少出错的可能性。就像这样:p {text-align:center; color:red;}
你应该在每行只描述一个属性,这样可以增强样式定义的可读性,就像这样:
p {
text-align: center;
color: black;
font-family: arial;
}
空格和大小写
大多数样式表包含不止一条规则,而大多数规则包含不止一个声明。多重声明和空格的使用使得样式表更容易被编辑:
body {
color: #000;
background: #fff;
margin: 0;
padding: 0;
font-family: Georgia, Palatino, serif;
}
是否包含空格不会影响 CSS 在浏览器的工作效果,同样,与 XHTML 不同,CSS 对大小写不敏感。不过存在一个例外:如果涉及到与 HTML 文档一起工作的话,class 和 id 名称对大小写是敏感的。
颜色值的不同写法
除了英文单词 red,我们还可以使用十六进制的颜色值 #ff0000
:p { color: #ff0000; }
为了节约字节,我们可以使用 CSS 的缩写形式:p { color: #f00; }
我们还可以通过两种方法使用 RGB 值:
p { color: rgb(255,0,0); }
p { color: rgb(100%,0%,0%); }
请注意,当使用 RGB 百分比时,即使当值为 0 时也要写百分比符号。但是在其他的情况下就不需要这么做了。比如说,当尺寸为 0 像素时,0 之后不需要使用 px 单位,因为 0 就是 0,无论单位是什么。
上一篇 2017年第二季度运动记录
下一篇 Java-反射
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: