看到过的css 属性!!!

发布时间 2023-09-20 15:42:02作者: 努力不搬砖的iori

记录一下看到过的,没见过的不知道就算了;

 

inline-size: 60px

block-size:30px

padding-block:10px

这三个文字属性 和 writing-mode: 有关, writing-mode 设置文字是从左往右排列还是从上往下


 


 


 关于 nth-child!!!

 MDN 文档里解释

p:nth-child(1) {

background-color:red; // 这个选择器中  第一个 p-title  和 div》p  都会是红色背景, 因为第一个算是第一个p ,然后 在div中, 也存在第一个p  !!!

}

 最后注意  

<p><p>123</p><p/>

这种语法嵌套, 最终生成的效果是 =》  <p ><p/><p>123</p>   因为段落p 不允许包含任何的块元素, 包括它自己




 

关于position:fixed 定位的补缺:

使用 元素 固定定位来得到高度的情况下 ,默认时候是相对于屏幕视口的定位的,但是当元素祖先存在 transform perspective, filter 属性非none 时, 容器视口会从屏幕视口变成改祖先。

 




 

el-cascader  级联组件   限制选中数量:

 

默认这个组件是双向绑定 v-model=""的, 要限制选中数量,

那么就需要取消双向绑定, 通过自己绑定 属性 :value="value"  然后判断 value 是否大于2, 通过change 事件去判断是否符合数量限制,然后赋值。




el-select  实现自适应宽度!!!

主要借助于 子元素的宽度去撑大父元素, 然后将子元素隐藏(但是需要占位 来实现!!!)

 




scroll-behavior: smooth:  表示平滑滚动, 这样子锚点条状的时候就会有动画效果

还有一种js的方式, 就是先获取锚点的dom

然后 : dom.scrollIntoView({behavior:smooth}),  通过这种方式也可以实现跳转到锚点

 


 


 


css 实现多个容器保持相同的宽度,

可以借助于 flex布局, 因为flex 布局默认会有一个属性 就是 align-items:stretch  , 会拉神子元素以保持同样的宽度或者高度,

但是有一个问题就是 如果  display:flex  flex-direction:column  这样虽然可以保持同样的高度, 但是会出现子元素默认都是撑满整个宽度的 ,

所以这里 解决方案就是 使用 inline-flex !!! 

 




aspect-ratio:  1/1  保持容器的宽高比始终为1:1 ! !!

 




:focus-within   :  表示存在焦点 的 元素或者子元素获取焦点应用的样式

 


 


 


莫名的div 对不齐,错位位置 或者文字对不齐的问题。 大部门可能是 vertical-align:baseline 这问题, 有时候不同容器中的文字为了保持默认的baseline 对齐, 就会错位容器!!!导致出现莫名的错位,莫名的滚动条等问题

 


 



vue2

vue.data 页面级暂存的思路和实现:

点击暂存按钮的时候,就是直接将this.$data中的数据存到localstorage中, 然后因为 vue中的 data() {} 其实就是一个函数,返回一个对象, 所以直接 可以 export default {let pageInfo =  JSON.parse(localstorage.getitem("vuepage"));  data() {return Object.assign({}, pageInfo ) ;}}

 




 

 

数字id太长导致请求接口报错的问题: 其实就是 js中 整型其实也就是精度要求的  大于 2**53 次方的 int id  就会出现id出现错误,导致请求失败。 所以也提醒id尽量使用字符串类型去存储!!!

至于解决方式 可以借助于 json-bigint 这个包。 npm 安装后  转换一下格式即可。


 


 

关于获取 transition: all 1s;  如果获取动画持续的时间的问题:

 

可以使用 window.getComputedStyle(dom). transitionDuration  就可以获取到 这个动画的持续时间, 那么就可以动态的设置定时器出发的时间,就可以完成动画完成后,执行逻辑操作的这种操作了,不用担心手动填的时间太短导致动画没完成就执行或者动画完成,等待时间太久等问题!!!

 




 

css 高度的悖论问题:

对于 <div class=father><div class=child></div><.div/>  ,  father的高度取决于 child的高度, 所以在child 的样式 设置 为 50% 是不会有效果的,因为father 没高度,而child 又说我的宽度是father的50% 。  除非child 是脱离了文档流的绝对定位。 子绝父相, 这样子就可以i实现!!!




float 布局, 子元素超高,内容被撑大导致超高, 就可能会出现布局错乱的问题!!!!这个排查UI需要很注意的点




 

 

span 标签默认是 inline, 也就是说默认宽度是根据内容来设置的, 但是如何将span 放到flex 布局中, span  就会自动被转成block, 就导致宽度不会跟着内容来改变, 就导致出现实际占位宽度和内容宽度不一致的问题!!!

 



inline 展示的标签, 默认的 vertical-align 是baseline  ,这就会导致莫名的缝隙问题。  将display  改成block 或者修改 vertical-align  就可以解决!!!

 



 

 

backgrond: url()  这个 属性默认只填写图片地址时, 其实其他 比如 no-repeat 属性 默认时会被加上  而且值是  initial  所以 如果单独给图片设置 background-repeat 属性, 一定要设置在backgrond: url() 后面或者 直接 background: url no-repeat  一起写

 




flex-direction:row-reverse,  碰到左右结构,还是flex 布局的 ,调换左右的结构可以使用 这个css!!!

 




 

 

关于 flex 布局,可能会出现缩放事件的 缩小事件不会被执行的情况。  这是因为不对flex布局的子元素设置 min-width 或者overflow 的情况下, flex布局自动伸缩 flex-shrink 事件不会小于内容宽度, 所以会出现 flex 布局的伸缩效果在拉伸浏览器,布局会变宽,但是小于一定的宽度后,不会在自己缩小的原因。

 




关于系统的深色模式还是浅色模式 

可以使用 media 查询来判断!!!

@media and (pefers-color-scheme: dark) {

// 表示当系统调到深色模式, 此处的css  样式就可以生效!!!

}



相邻兄弟选择器(+)、子选择器(>)、兄弟选择器(~)

CSS 选择器 - CSS:层叠样式表 | MDN (mozilla.org)



 

margin 和 padding 的百分比的计算是按照 父级的宽度来计算的!!!!




 

对于左右结构,但是存在一边的区域内容高度低于 另外一边时, 可以使用 flex 布局默认的 拉伸,使得左右结构的高度一致!!!, 那如果一边的高度是动态的,那么另外一边的高度就可以自适应为动态的高度!!!