Css 开发文件记录
如何取消鼠标的双击选中
/* 火狐 */
-moz-user-select: none;
/* Safari 和 欧朋 */
-webkit-user-select: none;
/* IE10+ and Edge */
-ms-user-select: none;
/* Standard syntax 标准语法(谷歌) */
user-select: none;
动态绑定css值
- 方法1 cssVar 然后可以通过js修改
- 方法2 v-bind 绑定 适用于vue,注意在绑定url等值的时候需要注意
.className{
height:v-bind('jsheight')
}
css动画卡顿解决方案
如果控制的是原先定位上面的属性 会导致过多的计算 最终导致动画卡顿 解决:使用transform 替代 eg 上下浮动的动画
@keyframes scatter {
0% {
transform: translateY(-2px)
}
100% {
transform: translateY(2px)
}
}
.thumbsBox{
background-color: v-bind("bgc");
&:hover .thumbs{
opacity: 1;
animation: scatter 0.5s linear infinite both alternate;
}
}
css来回动画/动画结束后反方向执行
两种方案
- 原生css 利用到了both 和 alternate两个属性 both是动画结束处于中间态 alternate是反向执行 适合自己写动画的场景
- vue的transistion 适合使用animatecss的场景
<transition
name="custom-classes-transition"
enter-active-class="animate__animated animate__lightSpeedInRight"
leave-active-class="animate__animated animate__lightSpeedOutRight"
>
</transition>
css加label星号 naive
利用naive的注入功能,加上css的after去动态添加星号
css伪元素counter
伪元素counter最早在markdown中见到,比如下面的结构
- xxx
- Xx
- Xxxxx 上面的123 都是通过counter生成的 原理是 当容器初始化的时候 声明count计数器 对应counter-reset 值是该计数器控制的变量 该值默认为0
.leftSiderContainer {
counter-reset: index;
}
然后在添加伪元素的时候 使用counter-increment 对计数器控制的变量进行+1,也就是对它的值进行了操作 伪元素的cotent可以声明内容 结合counter函数 传入计数器的变量index 计算出当前的值
.leftSider {
&::after {
counter-increment: index;
content: counter(index);
@apply absolute bottom-[8px] left-[-20px] ml-[50%] w-[52px] h-[20px] rounded-[8px] bg-[#7f7f7f] text-[white] text-center;
}
}
锚点跳转
锚点跳转是利用了a标签的href属性,当给目标的元素加了a标签作为父元素的时候,随着视窗滚动到目标元素,就会显示href出来
<a href="#123">
<img src='scsccs.png'/>
</a>
优点:方便做跳转 缺点:由于锚点会操作到url,因此刷新后会丢失锚点位置
Inline-flex 和 flex 的区别
总结:flex 更适合于容器元素, inline-flex适合于内联元素,比如按钮,标签等布局 对于行内的元素来说,可以用inline-flex布局把元素塞进去,和周围的文本融为一体
如果用了flex 则会变成独占一行
naive的按钮组件中的按钮的文本和字体就使用了inline-flex布局
在内部插入阴影
实现这种button的效果
代码
box-shadow: inset 0 -10px 10px -10px rgba(0, 0, 0, 0.3);
mac下分辨率过高字体变粗问题
fontfamily全局设置normal 后面有需要再bold
字体统一问题
为了在mac下能够字体统一,那必须下载相同的字体,并且使用wrap让字体能在下载完后加载,没下完之前就用默认的
字体压缩
otf转woff可以达到压缩,特别是部分字体,压缩后会变得很小很小,而且正常情况下,我们只需要下载normal的字体即可
grid 学习
grid-template-areas 使用
实现效果
grid-row grid-column 使用
上面的例子,换这个写法
如何做Radio的圆形Checked效果
tw: checked:bg-white checked:shadow-[0_0_0_6px_#F96B18_inset,0_0_0_6px_#F96B18_inset]
解释:
这是 CSS 的 box-shadow
属性的值,用于给元素添加阴影效果。box-shadow
属性的值可以包含以下几个部分:
- 水平偏移:第一个
0
表示阴影的水平偏移量。0
表示阴影不会向左或向右偏移。 - 垂直偏移:第二个
0
表示阴影的垂直偏移量。0
表示阴影不会向上或向下偏移。 - 模糊距离:第三个
0
表示阴影的模糊距离。0
表示阴影边缘将是硬边,没有模糊效果。 - 扩展距离:
6px
表示阴影的扩展距离。这会使阴影的大小增加,正值会使阴影扩大,负值会使阴影缩小。 - 颜色:
#F96B18
表示阴影的颜色。 - 插入:
inset
关键字表示这是一个内阴影,而不是默认的外阴影。
因此,0 0 0 6px #F96B18 inset
表示一个没有偏移和模糊效果,扩展距离为 6px
,颜色为 #F96B18
的内阴影。
然后,这个阴影值被重复了两次,所以你会得到两个完全相同的内阴影。在大多数情况下,重复的阴影不会有任何效果,因为它们会完全重叠。但是,如果阴影的颜色有透明度,重复的阴影会使颜色看起来更深。
实现一个霓虹灯效果的按钮
Input 框遇到格式化后 Cursor 位置变化问题修复
解决办法:
useCursor
通过这个 hook
在值变化的时候记录光标的位置,当值变化后重新 setSelectionRange
回原来的位置
Ellipsis 文本溢出显示省略号
该样式不继承给子元素
如果要继承的话得特殊设置或使用方自己加,所以一般不会在<Ellipsis>
组件中嵌套其他组件
.moe-truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
多行 Ellipsis
style {
display: -webkit-box;
-webkit-box-orient: vertical;
overflow: hidden;
-webkit-line-clamp: 3;
overflow-wrap: break-word;
}
MutationObserver 监听DOM树变化
Svg 图表改颜色
当 fill
属性为 currentColor
的时候可以通过 color
fill
来改变颜色
实现一个斜线的背景
background-image: linear-gradient(135deg,#EEF0F2 10%,transparent 10% 50%,#EEF0F2 50% 60%,transparent 60% 100%)
background-size: 10px 10px;
换行属性
white-space
控制如何处理元素内的空白符,包括空格、换行符、制表符等
white-space: pre-wrap;
// 连续的空白符会被保留,换行符会被保留
word-break
和 overflow-wrap
控制文本如何被换行
text-overflow
当文本溢出时,控制文本如何显示省略号
Button 的 title 属性
鼠标悬停在按钮上时显示的文本
relatedTarget
只读属性 MouseEvent.relatedTarget 是鼠标事件的次要目标,当从 A 移入 B 时,relatedTarget 是 B