CSS tricks-1
开发中的CSS tricks-1 ·
1、hover悬浮效果·
.item:hover { |
2、混入实现原生CSS读取·
-
背景色,采用混入的方式:
原本:Background-image: url()
-
配置混入:
@function appendHost($path) {
@return $host + $path;
}
// 将url带上host
@mixin backgroundImg($path) {
background-image: url(appendHost($path));
} -
使用混入:
@include backgroundImg('/componentStatic/danceCard.png');
-
写行内样式的bg:
style={{backgroundImage: 'url(' + src(item.backgroundImg) + ')',}}
3、vertical-align·
-
实现场景:
&::before {
content: '';
margin-right: 8px;
display: inline-block;
width: 2px;
height: 20px;
vertical-align: sub;
background: blue;
} -
vertical-align属性:
参数参考:https://developer.mozilla.org/zh-CN/docs/Web/CSS/vertical-align
-
使行内元素盒模型与其行内元素容器垂直对齐
-
垂直对齐表格单元内容:
注意
vertical-align
只对行内元素、行内块元素和表格单元格元素生效:不能用它垂直对齐块级元素。 -
vertical-align:inherit在safari上有兼容问题;
-
4、负定位的用法·
-
定位值为负数,且为自身宽度,将伪元素定位到组件外部:
&::after {
content: '';
position: absolute;
top: 22px;
right: -24px;
display: block;
width: 20px;
height: 200px;
background: blue;
}
为什么这样做?
这个场景在奇数偶数行反向显示时:页面设计时,将来它下一行是在左边大蓝条;
使用组件时,传入参数控制类名,进而在反向显示时。调整父元素位置后,自己left为-负值即可;
5、遮罩效果·
-
hover时,出现遮罩效果:
<style>
/* 注意chrome上默认了body标签的margin为8,所以遮罩定位出现时不是完全吻合着图片 */
/* 写好遮罩层样式,并且让它先不显示 */
.cover {
position: absolute;
top: 0;
left: 0;
width: 400px;
height: 300px;
background-color: rgba(0, 0, 0, 0.5);
opacity: 0;
}
.cover:hover {
opacity: 1; /* hover显示遮罩 */
}
</style>
<div class="box" style="width: 400px; height: 300px;">
// 多句嘴:img的alt对SEO有帮助
<img object-fit = 'cover' width="400px" height="300px"
src="https://mynightwish.oss-cn-beijing.aliyuncs.com/img/a-icehill.avif" />
<!-- 遮罩 -->
<div class="cover">
遮罩来了
</div>
</div>
6、滚动条·
文章地址:https://mynightwish.top/posts/scroll.html
实践场景:在markdown-editor-lite中,中间的滚动条时有时无,非常的诡异(包括测试环境、线上环境、各种浏览器及chrome上的不同版本);
- 后来,干脆自己整个滚动条,并模拟预期显示的滚动条的样式;
此外,关于这个编辑器在issue上还有很多其他的bug
7、cacl·
----待补充
8、隐藏属性·
https://mynightwish.top/posts/hideElement.html
9、gap属性·
https://mynightwish.top/posts/gap-property.html
10、组件库样式生效·
-
只有那种原生的span,div可以生效,其他的类粘贴到控制台修改生效;
-
需要加入:global进行包裹:
:global {
.antd-btn-primary {
color: red
}
}
- 此外,对于项目中需要全局的组件库样式,我们建议在公共文件中添加,在具体页面中引入,不同的再覆盖;
11、Antd的menu·
-
多层级嵌套的时候,map的时候不要key都用index,这样会重复问题:
<div className={articleStyles.navContext}>
<Menu selectedKeys={[currentKey]}>
{ARTICLE_NAV.map((item, index) =>
<SubMenu key = {index}>
{item.navContext.map((item, index2) =>
<Menu.Item
key = {`${index}-${index2}`} //避免重复
onClick = {() => handleSubmenuClick(item, index2, index)}
>
{item.title}
</Menu.Item>
)}
</SubMenu>
)}
</Menu>
</div>
评论