去除inline-block 元素间间距的方法
现象:真正意义上的inline-block 水平呈现的元素间,换行显示或空格分隔的情况下又间距。
元素本身就是inline-block
<input /> <input type="submit" />
设置属性为inline-block的元素
.space a {
display: inline-block;
padding: .5em 1em;
background-color: #cad5eb;
}
<div class="space">
<a href="##">惆怅</a>
<a href="##">淡定</a>
<a href="##">热血</a>
</div>
解决方案
1.移除空格
2.使用margin负值
.space a {
display: inline-block;
margin-right:-3px;
}
3.font-size:0(使用方案)
.space {
font-size: 0;
}
.space a {
font-size: 12px;
}
4.letter-spacing
.space {
letter-spacing: -3px;
}
.space a {
letter-spacing: 0;
}
display:table 应用场景
动态垂直居中对齐
.menu{
display:table
}
.text{
display:table-cell
vertical-align:middle
}
图片统一大小后的拉伸问题
需求:要求图片的大小都固定
场景:图片的原始大小都不一样,强行设定大小值会导致拉伸,如果不设定大小参差不齐
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
img{
width: 150px;
height: 150px;
/* background-size: cover; */
object-fit: cover;
}
</style>
</head>
<body>
<div>
<img src="https://dummyimage.com/200x200/000/fff" alt="">
<img src="https://dummyimage.com/170x200/000/fff" alt="">
<img src="https://dummyimage.com/230x200/000/fff" alt="">
<img src="https://dummyimage.com/280x200/000/fff" alt="">
<img src="https://dummyimage.com/150x150/000/fff" alt="">
</div>
</body>
</html>
解决方案
1.cover
缩放背景图片以完全覆盖背景区,可能背景图片部分看不见
cover值 尽可能大的缩放背景图像并保持图像的宽高比例(图像不会被压扁)
优点:背景图片全部覆盖所属元素区域
缺点:超出的部分会被隐藏
background-size:cover;
2.object-fit
场景 : 使用 img 标签来引入图片时。
object-fit: cover;
cover: 被替换的内容大小保持其宽高比,同时填充元素的整个内容框。 如果对象的宽高比与盒子的宽高比不匹配,该对象将被剪裁以适应。
引入style的位置的区别
优先级不同,就近原则,离标签越近的style优先级越高,body的优先级高于head
如果将css放在头部,css的下载解析式可以和html的解析同步进行的
如果放在body,在body开始之前声明了css时,样式实际上已经加载了,因此用户很快就会看到屏幕上出现的内容(例如背景颜色)。且在解析声明的样式时,浏览器必须重新呈现页面,加载时新旧。
右侧出现滚动条导致页面抖动
场景:在页面内容没有占满屏幕时右侧不会出现滚动条,当再加载内容时页面会出现右侧滚动条,页面宽度由于是auto,整个页面会向左移动
html {
overflow-x: hidden;
overflow-y: auto;
}
body {
width: 100vw;
overflow: hidden;
padding-right: calc(100vw - 100%);
}
网站字体样式自定义
@font-face {
font-family: mFont;
src: url('../font/crapaud_petit.ttf');
}
font-family : 该字体引用名,方便引用
src:url() : 本地字体资源.ttf的相对路径
//页面中使用
body{
font-family:mFont;
}
滚动条 scrollbar 出现造成页面宽度被挤
https://segmentfault.com/a/1190000017044563
overflow
overlay
行为与auto相同,但滚动条绘制在内容之上而不是占用空间。 仅在基于WebKit(例如,Safari)和基于Blink的(例如,Chrome或Opera)浏览器中受支持。
利用vw和calc实现
因为100vw是window的宽度,其实就是window.innerWidth, 而容器的宽度100%就是除了滚动条的可用宽度,因此在没有滚动条时候calc(100% - 100vw)就是0,触发滚动条时候其值为负的滚动条宽度,我们将其赋值给容器的margin-right,即可巧妙补偿这个宽度的挤压,在滚动条存在的情况下容器宽度仍然占据整个视口的宽度。
* {
margin: 0;
padding: 0;
}
html {
overflow-y: auto;
overflow-x: hidden;
}
.container {
height: 2000px;
margin-right: calc(100% - 100vw);
padding: 17px;
background-color: #00b83f;
text-align: right;
}
margin : top 显示在另一个div之上
场景:两个兄弟节点,想让div2 显示在 div1 之上,但是div2 会被div1 盖住
原因:可能是你的节点一设置了position:relative;属性,但是第二个节点没有设置
解决:设置 position:relative 属性
背景图片自适应
场景:网站banner图片是根据浏览器页面整屏幕显示的,通过 background : url() ;属性进行设置的,这时候需要根据网站的拉伸进行图片的自适应调整。
background-size:100% 100%;
table 表格(tr)行间距
注:给 tr 加 margin 不会生效
border-collapse 属性设置表格的边框是否被合并为一个单一的边框,它的属性值如下:
值 | 描述 |
---|---|
separate | 默认值。边框会被分开。不会忽略 border-spacing 和 empty-cells 属性。 |
collapse | 如果可能,边框会合并为一个单一的边框。会忽略 border-spacing 和 empty-cells 属性。 |
inherit | 规定应该从父元素继承 border-collapse 属性的值。 |
border-collapse属性加上border-spacing属性就可以设置tr行间距
table{
border-collapse: separate;
border-spacing: 5px 10px;
}
如何修改 placeholder 样式
<style>
input::placeholder {
color: green;
}
</style>
<input type="text" placeholder="hello world" style="color: red;">
IE解决方案:
首先IE9及以下不支持placeholder。IE10需要用:-ms-input-placeholder,并且属性需要加上!important提高优先级。
<style>
input:-ms-input-placeholder {
color: green !important;
}
</style>
<input type="text" placeholder="hello world" style="color: red;">
overflow 不出现滚动条
备注:隐藏横向(x轴)滚动条且可以正常滚动,在pc端无法实现,只有在移动端模式下才可以正常滚动。
首先,如果需要隐藏滚动条并在内容溢出时显示滚动条,只需要设置overflow:auto样式即可。想要完全隐藏滚动条只需设置overflow:hidden即可,但是这样一来将导致元素内容不可滚动。时至今日,还没有任何一条CSS规则可以使元素可以隐藏滚动条的同时依然可以滚动内容,只能通过针对特定浏览器设置滚动条样式来实现。
Firefox浏览器
scrollbar-width: none; /* Firefox */
IE浏览器
-ms-overflow-style: none; /* IE 10+ */
chrome 和 safari 浏览器
::-webkit-scrollbar {
display: none; /* Chrome Safari */
}
注意:当你要隐藏滚动条的时候,最好将overflow显示设置为auto或者scroll保证内容是可滚动的。
示例
我们使用上面的CSS属性以及溢出实现下面一个实例——隐藏水平滚动条,同时允许垂直滚动条:
.demo::-webkit-scrollbar {
display: none; /* Chrome Safari */
}
.demo {
scrollbar-width: none; /* firefox */
-ms-overflow-style: none; /* IE 10+ */
overflow-x: hidden;
overflow-y: auto;
}