本人笔记地址

#目录

一、知识点详解

Ⅰ-css3 pointer-events

此属性会阻止hover、active、onclick等触发事件

  1. pointer-events更像是JavaScript,它能够:
  • 阻止用户的点击动作产生任何效果
  • 阻止缺省鼠标指针的显示
  • 阻止CSS里的 hoveractive状态的变化触发事件
  • 阻止JavaScript点击动作触发的事件
  1. 具体用法:
  1. pointer-events: auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit

pointer-events属性有很多值,但是对于浏览器来说,只有auto和none两个值可用,其它的几个是针对SVG的(本身这个属性就来自于SVG技术)。

  1. pointer-events属性值详解
  • auto——效果和没有定义pointer-events属性相同,鼠标不会穿透当前层。在SVG中,该值和visiblePainted的效果相同。
  • none——元素不再是鼠标事件的目标,鼠标不再监听当前层而去监听下面的层中的元素。但是如果它的子元素设置了pointer-events为其它值,比如auto,鼠标还是会监听这个子元素的。
  • 其它属性值为SVG专用,这里不再多介绍了。

二、实际问题解决

Ⅰ-图片不拉伸属性 object-fit

  1. width: 100%;
  2. height: 100%;
  3. object-fit: cover;

Ⅱ-css鼠标点击的五种状态

  1. 1a:link{color:#fff} 未访问时的状态(鼠标点击前显示的状态)
  2. 2a:hover{color:#fff} 鼠标悬停时的状态
  3. 3a:visited{color:#fff} 已访问过的状态(鼠标点击后的状态)
  4. 4a:active{color:#fff} 鼠标点击时的状态
  5. 5a:focus{color:#fff} 点击后鼠标移开保持鼠标点击时的状态(只有在<a href="#"></a>时标签中有效)

Ⅲ-阴影效果

  1. box-shadow:2px 2px 5px #000; //正常
  2. box-shadow:inset 2px 2px 5px #000; //内阴影
  3. box-shadow:0px 0px 5px 10px #000;//拓展阴影长度
  4. box-shadow:0px 0px 0px 3px #bb0a0a,
  5. 0px 0px 0px 6px #2e56bf,
  6. 0px 0px 0px 9px #ea982e;//多重阴影

逼真的阴影效果示例

  1. <div class="box11 shadow"></div>
  2. /********************************************/
  3. .box11 {
  4. width: 300px;
  5. height: 100px;
  6. background: #ccc;
  7. border-radius: 10px;
  8. margin: 10px;
  9. }
  10. .shadow {
  11. position: relative;
  12. max-width: 270px;
  13. box-shadow: 0px 1px 4px rgba(0,0,0,0.3),
  14. 0px 0px 20px rgba(0,0,0,0.1) inset;
  15. }
  16. .shadow::before,
  17. .shadow::after {
  18. content:"";
  19. position:absolute;
  20. z-index:-1;
  21. }
  22. .shadow::before,
  23. .shadow::after {
  24. content:"";
  25. position:absolute;
  26. z-index:-1;
  27. bottom:15px;
  28. left:10px;
  29. width:50%;
  30. height:20%;
  31. }
  32. .shadow::before,
  33. .shadow::after {
  34. content:"";
  35. position:absolute;
  36. z-index:-1;
  37. bottom:15px;
  38. left:10px;
  39. width:50%;
  40. height:20%;
  41. box-shadow:0 15px 10px rgba(0, 0, 0, 0.7);
  42. transform:rotate(-3deg);
  43. }
  44. .shadow::after{
  45. right:10px;
  46. left:auto;
  47. transform:rotate(3deg);
  48. }

Ⅳ-实现a标签禁用

  1. 需求分析:业务中遇到一个需求-根据当前数据类别进行权限限制,当我为新用户数据时,开放编辑操作,当我为旧用户数据时,禁用编辑操作

  2. 代码:

    1. css代码:

```scss /*设置a标签禁用 / a.disabled { pointer-events: none; filter: alpha(opacity=50); /IE滤镜,透明度50%/ -moz-opacity: 0.5; /Firefox私有,透明度50%/ opacity: 0.5; /其他,透明度50%/ color: gray;

}

//因为pointer-events会阻止hover事件,所以在外层进行判断,同时变为行内元素 .disabledbox { display: inline-block } .combox { display: inline-block } .disabledbox:hover { cursor: not-allowed; }

  1. >
  1. html部分调用代码—示例中是在:antd中table组件中试用 ```
  1. //新旧渠道商标识
  2. const CHANNELBZ = {
  3. OLD: 0,
  4. NEW: 1
  5. }
  6. ....
  7. {
  8. title: '推荐折扣',
  9. dataIndex: 'discount',
  10. width: 100,
  11. render: (value, item) => (
  12. <div>
  13. <span>{value}</span>
  14. <div className={item.sourceType == CHANNELBZ.OLD ? style.disabledbox : style.combox}>
  15. <a
  16. className={item.sourceType == CHANNELBZ.OLD ? style.disabled : ""}
  17. style={{ marginLeft: 10 }}
  18. onClick={() => {
  19. console.log(item.sourceType, "itemmmmmm")
  20. }}
  21. 编辑
  22. </a>
  23. </div>
  24. </div>
  25. ),
  26. },
  1. 效果实现截图: Css补缺笔记 - 图1

Ⅴ-实现父元素半透明,子元素不透明

CSS实现父元素半透明,子元素不透明。 很久以来大家都习惯使用opacity:0.5在新式浏览器里实现半透明,而对IE较旧的版本使用filter:Alpha(opacity=0.5)的滤镜来实现半透明。但是这样实现的半透明有个问题,那就是这个属性会被子元素所继承。

如下代码,则子元素中也将是半透明效果,无论你将子元素的半透明值重置还是如何都不会改变这一情况。

  1. .parent{opacity:0.9; background-color:#fff;}
  2. .child{opacity:1.0; background-color:#fff; height:200px;}
  1. 问题效果

Css补缺笔记 - 图2

  1. 解决:其实在新的CSS3规则里面的属性 GRBA已经可以方便的实现父元素透明,而子元素不透明了。
  1. //使用背景色透明可以限制子类不继承,防止下方按钮也变得半透明
  2. background:rgba(255,255,255,0.9) ;

Css补缺笔记 - 图3