Css 使用技巧
• 4 • 776
Table of contents
-
解决
img 5px
间距的问题 - 元素的高度与window的高度相同
- 修改input placeholder样式
- 使用:not选择器
- 使用flex布局将一个元素智能地固定在底部
- 使用caret-color来修改光标的颜色
-
删除
type="number"
末尾的箭头 -
outline:none
删除输入状态线 - 解决OS滚动条被卡住的问题
- 绘制三角形
- 绘制小箭头
- 图像适配窗口大小
- 隐藏滚动条
- 自定义选定的文本样式
- 不允许选择文本
- 单行文本溢出时显示省略号
- 多行文本溢出时显示省略号
- 中英文自动换行
-
使用
"filter::grayscale(1)"
,使页面处于灰色模式。 - Table表格边框合并
- CSS实现文本两端对齐
- 实现文字竖向排版
- 页面动画出现闪烁问题
- 字母大小写转换
- 将一个容器设为透明
- 消除transition闪屏
- 识别字符串里的’\n’并换行
-
移除
a
标签被点链接的边框 - 修改input输入框中光标的颜色不改变字体的颜色
- 全屏背景图片的实现
-
解决
1px
边框变粗问题 -
图片自适应
object-fit
- css渐变色文本在ios Safari上不可见的问题
解决img 5px
间距的问题
- 你是否经常遇到图片底部多出
5px
间距的问题?不用急,这里有4种方法可以解决。
方案1:设置父元素字体大小为0
.img-container{
font-size: 0;
}
方案2:将img元素设置为display:block
img {
display:block;
}
方案3:将img元素设置为vertical-align: bottom
img {
vertical-align: bottom;
}
方案4:给父元素设置 line-height:5px
.img-container{
line-height:5px;
}
元素的高度与window的高度相同
- 如何使元素与窗口一样高?答案使用
height:100vh;
修改input placeholder样式
.placehoder-custom:-webkit-input-placeholder {
color:#babbc1;
font-size:12px;
}
使用:not选择器
- 除了最后一个元素外,所有元素都需要一些样式,使用
not
选择器非常容易做到。 - 如下图所示:最后一个元素没有底边。
li:not(:last-child){
border-bottom: 1px solid #ebedf0;
}
使用flex布局将一个元素智能地固定在底部
- 当内容不够时,按钮应该在页面的底部。当有足够的内容时,按钮应该跟随内容。当你遇到类似的问题时,使用
flex
来实现智能的布局。
/* html */
<div class="container">
<div class="main">I'm fatfish, 6 years of programming experience, like front-end, writing
and making friends,looking forward to becoming good friends with you.</div>
<div class="footer">rule</div>
</div>
/* css */
* {
margin: 0;
padding: 0;
}
.container {
height: 100vh;
/* 关键样式 */
display: flex;
flex-direction: column;
justify-content: space-between;
}
.main {
/* 关键样式 */
flex: 1;
background-image: linear-gradient(
45deg,
#ff9a9e 0%,
#fad0c4 99%,
#fad0c4 100%
);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
}
.footer {
padding: 15px 0;
text-align: center;
color: #ff9a9e;
font-size: 14px;
}
使用caret-color来修改光标的颜色
- 可以使用
caret-color
来修改光标的颜色
caret-color:#ffd476;
删除type="number"
末尾的箭头
-
默认情况下,在
type=number
的末尾会出现一个小箭头,但有时我们需要将其阳除。我们应该怎么做呢?
.no-arrow::-webkit-outer-spin-button, .no-arrow::-webkit-inner-spin-button {
-webkit-appearance:none;
}
outline:none
删除输入状态线
-
当输入框被选中时,它默认会有一条蓝色的状态线,可以通过使用
outline: none
来移除它。 -
如下图所示:第二个输入框被移除,第一个输人框没有被移除。
![image-20220804123333752])
<input type="number" class="no-outline" />
.no-outline {
outline: none;
}
解决OS滚动条被卡住的问题
-
在苹果手机上,经常发生元素在滚动时被卡住的情况。这时,可以使用如下的css来支持弹性滚动。
body,html{ -webkit-overflow-scrolling: touch; }
绘制三角形
<div class="box">
<div class="box-inner">
<div class="triangle bottom"></div>
<div class="triangle right"></div>
<div class="triangle top"></div>
<div class="triangle left"></div>
</div>
</div>
.box {
padding: 15px;
background-color: #f5f6f9;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
}
.triangle {
display: inline-block;
margin-right: 10px;
/* Base Style */
border: solid 10px transparent;
}
/*bottom*/
.triangle.bottom {
border-top-color: #0097a7;
}
/*top*/
.triangle.top {
border-bottom-color: #b2ebf2;
}
/*left*/
.triangle.left {
border-right-color: #00bcd4;
}
/*right*/
.triangle.right {
border-left-color: #009688;
}
绘制小箭头
<div class="box">
<div class="box-inner">
<div class="arrow bottom"></div>
<div class="arrow top"></div>
<div class="arrow right"></div>
<div class="arrow left"></div>
</div>
</div>
.box {
padding: 15px;
background-color: #ffffff;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
}
.arrow {
display: inline-block;
margin-right: 10px;
width: 0;
height: 0;
/* Base Style */
border: 16px solid;
border-color: transparent #cddc39 transparent transparent;
position: relative;
}
.arrow::after {
content: "";
position: absolute;
right: -20px;
top: -16px;
border: 16px solid;
border-color: transparent #fff transparent transparent;
}
/*bottom*/
.arrow.bottom {
transform: rotate(270deg);
}
/*top*/
.arrow.top {
transform: rotate(90deg);
}
/*left*/
.arrow.left {
transform: rotate(180deg);
}
/*right*/
.arrow.right {
transform: rotate(0deg);
}
图像适配窗口大小
<div class="box">
<div class="img-container">
<img src="https://cdn-images-1.medium.com/max/1600/0*tuDPftoIhupd-qx-.jpg" alt="">
</div>
</div>
<div class="box">
<div class="img-container">
<img src="https://cdn-images-1.medium.com/max/1600/0*tuDPftoIhupd-qx-.jpg" alt="">
</div>
</div>
<div class="box-vw">
<div class="img-container">
<img src="https://cdn-images-1.medium.com/max/1600/0*tuDPftoIhupd-qx-.jpg" alt="">
</div>
</div>
.box,
.box-vw {
background-color: #010102;
border-radius: 10px;
overflow: hidden;
margin-bottom: 15px;
}
.box:nth-of-type(2) {
width: 260px;
}
/* vw */
.box-vw .img-container {
width: 100vw;
height: 66.620879vw;
padding-bottom: inherit;
}
/* padding */
.img-container {
width: 100%;
height: 0;
/* Aspect ratio of picture*/
padding-bottom: 66.620879%;
}
img {
width: 100%;
}
隐藏滚动条
-
第一个滚动条是可见的,第二个滚动条是险藏的。这总味着容器可以被滚动,但滚动条被隐藏起来,就像它是透明的一样。
.box-hide-scrollbar::-webkit-scrollbar {
dispaly:none;
}
自定义选定的文本样式
.box-custom::selection {
color: #ffffff;
background-color: #ff4c9f;
}
不允许选择文本
.box p:last-child {
user-select: none;
}
单行文本溢出时显示省略号
.one-line-ellipsis {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
max-width: 375px;
}
/* flex 布局下的文本溢出省略号*/
.lable_title {
display: flex;
font-size: 28rpx;
font-weight: 400;
color: $textColor;
text {
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
text-overflow: ellipsis;
overflow: hidden;
}
}
多行文本溢出时显示省略号
.more-line-ellipsis {
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
/* set n lines, including 1 */
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
中英文自动换行
word-break:break-all
;只对英文起作用,以字母作为换行依据word-wrap:break-word
;只对英文起作用,以单词作为换行依据white-space:pre-wrap
;只对中文起作用,强制换行white-space:nowrap
;强制不换行,都起作用
p {
word-wrap: break-word;
white-space: normal;
word-break: break-all;
}
/* 不换行 */
.wrap {
white-space: nowrap;
}
/* 自动换行 */
.wrap {
word-wrap: break-word;
word-break: normal;
}
/* 强制换行 */
.wrap {
word-break: break-all;
}
使用"filter::grayscale(1)"
,使页面处于灰色模式。
body {
filter: grayscale(1);
}
Table表格边框合并
table,tr,td {
border: 1px solid #666;
}
table {
boder-collapse: collapse;
}
CSS实现文本两端对齐
.wrap {
text-align: justify;
text-justify: distribute-all-lines; //ie6-8
text-align-last: justify; //-个块或行的最后一行对齐方式
-moz-text-align-last: justify;
-webkit-text-align-last: justify;
}
实现文字竖向排版
/*单列展示时*/
.wrap{
width: 25px;
line-height: 18px;
height: auto;
font-size: 12px;
padding: 8px 5px;
word-wrap: break-word;/*英文的时候需要加上这句,自动换行*/
}
/*多列展示时*/
.wrap{
height: 210px;
line-height: 30px;
text-align: justify;
writing-mode: vertical-lr; //从左向右
writing-mode: tb-lr; //IE从左向右
//writing-mode: vertical-rl; 从右向左
//writing-mode: tb-rl; 从右向左
}
页面动画出现闪烁问题
-
在Chrome and Safari中,当我们使用CSS transforms或者animations时可能会有页面闪烁的效果,下面的代码可以修复此情况:
.cube{ -webkit-backface-visibility:hidden; backface-visibility:hidden; -webkit-perspective:1000; perspective:1000; /*Other transform properties here */ }
-
在webkit内核的浏览器中,另一个行之有效的方法是
.cube { -webkit-transform: translate3d(Θ, Θ. O); transform: translate3d(0, 0, 0); /* Other transform properties here */ }
字母大小写转换
p{itext-transform: uppercase;} //将所有字母变成大写字母
p{itext-transform: lowercase;} // 将所有字母变成小写字母
p{text-transform: capitalize;} // 首字母大写
p{font-variant: small-caps;}//将字体变成小型的大写字母
将一个容器设为透明
.wrap {
filter:alpha (opacity=50);
-moz-opacity:0.5;
-khtml-opacity: 0.5; opacity: 0.5;
}
消除transition闪屏
.wrap{
-webkit-transform-style:preserve-3d;
-webkit-backface-visibility:hidden;
-webkit-perspective:1000;
}
识别字符串里的’\n’并换行
- 一般在富文本中返回换行符不是的标签,而且In。不使用正则转换的情况下,可通过下面样式实现换行
body {
white-space: pre-line;
}
移除a
标签被点链接的边框
a{
outline:none;//或者out1ine: 0;
text-decoration:none;//取消默认下划线
}
修改input输入框中光标的颜色不改变字体的颜色
input{
color:#fff;
caret-color: red;
}
全屏背景图片的实现
.swper{
background-image:url(./img/bg-jpg);
width:100%;
height:100%;//父级高不为100%请使用100vh
zoom:1;
background-color:#fff;
background-repeat:no-repeat;
background-size:cover;
-webkit-background-size:cover;
-o-background-size:cover;
background-position:center 0;
}
解决1px
边框变粗问题
- 出现1px变粗的原因,比如在2倍屏时1px的像素实际对应2个物理像素
.dom{
height:1px;
background:#dbdbdb;
transform:scaleY(0.5);
}
图片自适应object-fit
-
当图片比例不固定时,想要让图片自适应,一般都会用background-size:cover/contain,但是这个只适用于背景图。
-
css3中可使用object-fit属性来解决图片被拉伸或是被缩放的问题。使用的提前条件:图片的父级容器要有宽高。
img{ width:100%; height:100%: object-fit:cover; }
css渐变色文本在ios Safari上不可见的问题
- background-clip:text不适用于display:flex,导致了-webkit-text-fill-color:transparent样式直接把文本透明了
- 需要删除display:flex,才能支持渐变色文本
// 渐变色文本
.gradient-effect {
background: linear-gradient(240.86deg, #ff8329 0%, #ff007a 66.41%);
-webkit-text-fill-color: transparent;
width: max-content;
background-clip: text;
-webkit-background-clip: text;
}
.mine-box-title {
font-family: Poppins;
font-style: normal;
font-weight: bold;
font-size: 40px;
line-height: 44px;
letter-spacing: -0.01em;
}
腾讯云COS设置
SecretId: AKIDyiCPM8h02pNhmeNsAD0bw3A1by94j6HD
SecretKey:nKaHF0VvACzXopeDVZNvGSaYO3ZqshGY
APPID:1302819971
Bucket:image-1302819971
设定存储区域:ap-guangzhou
设定存储路径:obsImage