去除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-cellvertical-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;}
