《css揭秘》- 47个不为人知的高阶操作🔥(下篇20-47, 7K长文多图预警)(三)

简介: 《css揭秘》- 47个不为人知的高阶操作🔥(下篇20-47, 7K长文多图预警)(三)

31-自定义复选框


介绍:为了满足设计师的审美要求,我们需要提供复选框的自定义实现方案


1687781396769.png


<input type="checkbox" id="awesome" autofocus />
<label for="awesome">Awesome!</label>
<input type="checkbox" id="awesome2" checked />
<label for="awesome2">Awesome!</label>
<input type="checkbox" id="awesome3" disabled />
<label for="awesome3">Awesome!</label>
<input type="checkbox" id="awesome4" checked disabled />
<label for="awesome4">Awesome!</label>
/**
 * Custom checkboxes
 */
input[type="checkbox"] {
    position: absolute;
    clip: rect(0,0,0,0);
}
input[type="checkbox"] + label::before {
    content: '\a0';
    display: inline-block;
    vertical-align: .2em;
    width: .8em;
    height: .8em;
    margin-right: .2em;
    border-radius: .2em;
    background: silver;
    text-indent: .15em;
    line-height: .65;
}
input[type="checkbox"]:checked + label::before {
    content: '\2713';
    background: yellowgreen;
}
input[type="checkbox"]:focus + label::before {
    box-shadow: 0 0 .1em .1em #58a;
}
input[type="checkbox"]:disabled + label::before {
    background: gray;
    box-shadow: none;
    color: #555;
    cursor: not-allowed;
}
body {
    font: 150%/1.6 sans-serif;
}


32-通过阴影来弱化背景


背景知识:RGBA 颜色

介绍:通过遮罩层来弱化背景,很常见,但不完美之处在于需要额外的 HTML 元素,虽不是啥大问题,不过我们确实可以通过其他方法来摆脱这个麻烦。


box-shadow 方案


1687781410672.png


<img src="https://cdn.pixabay.com/photo/2014/12/16/22/25/woman-570883__480.jpg" class="lightbox" />
<p>Bacon ipsum dolor amet consectetu..........</p>
/**
 * Rudimetary overlay with box-shadow
 */
.lightbox {
  position: fixed;
  top: 50%; left: 50%;
  margin: -200px;
  box-shadow: 0 0 0 50vmax rgba(0,0,0,.8);
}


backdrop 原生方案


可改样式,兼容性不好,注意⚠️


1687781421709.png


/**
 * Native modal dialog (limited support)
 */
dialog::backdrop {
  background: rgba(0,0,0,.8)
}


33-通过模糊来弱化背景


背景知识:过渡动画,“毛玻璃效果”,“通过阴影来弱化背景”

介绍:通过背景虚化的原理,比上面通过阴影更能打造真实的效果,主要是通过滤镜、高斯模糊来实现的,通常叫这个毛玻璃效果。


1687781432764.png


<dialog>O HAI, I’m a dialog. Click on me to dismiss.</dialog>
<main>
  <button>Show dialog</button>
  <p>Bacon ipsum dolor sit amet consectetur</p>
</main>
/**
 * De-emphasizing by blurring (AND dimming)
 */
main {
  transition: .6s;
  background: white;
}
main.de-emphasized {
  -webkit-filter: blur(3px);
  filter: blur(3px);
}
dialog {
  position: fixed;
  top: 50%; left: 50%;
  z-index: 1;
  width: 10em;
  padding: 2em;
  margin: -5em;
  border: 1px solid silver;
  border-radius: .5em;
  box-shadow: 0 .2em .5em rgba(0,0,0,.5),
              0 0 0 100vmax rgba(0,0,0,.2);
}
dialog:not([open]) {
  display: none;
}
body {
  font: 150%/1.6 Baskerville, Palatino, serif;
}


34-滚动提示


背景知识:css 渐变, background-size

介绍:一种相比原生浏览器滚动条来说,更加优雅的滚动提示效果,当可滚动时,显示上下阴影效果。


1687781448188.png


<!-- Geeky cat names! -->
<ul>  
    <li>Ada Catlace</li>  
    <li>Alan Purring</li>
    <li>Schrödingcat</li>
    <li>Tim Purrners-Lee</li>
    <li>Webkitty</li> 
    <li>Json</li>
    <li>Void</li>
    <li>Neko</li> 
    <li>NaN</li>
    <li>Cat5</li>
    <li>Vector</li>
</ul>
/**
 * Scrolling hints
 */
ul {
    display: inline-block;
    overflow: auto;
    width: 7.2em;
    height: 7em;
    border: 1px solid silver;
    padding: .3em .5em;
    list-style: none;
    margin-top: 2em;
    font: 100 200%/1.6 'Frutiger LT Std', sans-serif;
    background: linear-gradient(white 15px, hsla(0,0%,100%,0)) 0 0 / 100% 50px,
                radial-gradient(at top, rgba(0,0,0,.2), transparent 70%) 0 0 / 100% 15px,
                linear-gradient(to top, white 15px, hsla(0,0%,100%,0)) bottom / 100% 50px,
                radial-gradient(at bottom, rgba(0,0,0,.2), transparent 70%) bottom / 100% 15px;
    background-repeat: no-repeat;
    background-attachment: local, scroll, local, scroll;
    margin-top: 30px;
}


35-交互式的图片对比控件


背景知识:resize 属性

介绍:有时我们需要展示两张图片的外观差异,最常见的解决方案就是两张图片并排放置,然而这样人眼只能观察到非常明显的差异,从而忽略掉相对细小的区别。

还有一种更友好的解决方案业界叫做“图片对比滑动控件”,这个控件会把两张图片叠加起来,允许用户拖动分割条来控制这两张图片的显露区域,不过通常这种控件都需要依 赖 javascript 框架外加一大块 javascript 代码。 此书的亮点在于使用 纯 css 实现了这个控件。


1687781464059.png



<div class="image-slider">
  <div><img src="http://placekitten.com/200/300" alt="Before" /></div>
  <img src="http://static.runoob.com/images/demo/demo2.jpg" />
</div>
/**
 * Interactive image comparison - with CSS resize
 */
.image-slider {
    position:relative;
    display: inline-block;
}
.image-slider > div {
    position: absolute;
    top: 0; bottom: 0; left: 0;
    width: 50%;
    max-width: 100%;
    overflow: hidden;
    resize: horizontal;
}
.image-slider > div:before {
    content: '';
    position: absolute;
    right: 0; bottom: 0;
    width: 12px; height: 12px;
    padding: 5px;
    background: linear-gradient(-45deg, white 50%, transparent 0);
    background-clip: content-box;
    cursor: ew-resize;
    -webkit-filter: drop-shadow(0 0 2px black);
    filter: drop-shadow(0 0 2px black);
}
.image-slider img {
    display: block;
    user-select: none;
}


目录
相关文章
|
23天前
|
移动开发 前端开发 JavaScript
编程笔记 html5&css&js 005 网页上都有哪内容、形式和操作
编程笔记 html5&css&js 005 网页上都有哪内容、形式和操作
|
23天前
|
前端开发 JavaScript
如何固定html表格头部,用css样式即可实现,操作简便、代码简单
如何固定html表格头部,用css样式即可实现,操作简便、代码简单
45 0
|
9月前
|
JSON 前端开发 JavaScript
jQuery操作CSS
jQuery操作CSS
66 0
|
11月前
|
前端开发
CSS 高阶小技巧 - 角向渐变的妙用!
CSS 高阶小技巧 - 角向渐变的妙用!
|
6月前
|
JavaScript 前端开发
【jQuery学习】—jQuery操作CSS和表格
【jQuery学习】—jQuery操作CSS和表格
|
11月前
|
存储 前端开发 JavaScript
JavaScript操作表格及CSS样式
JavaScript操作表格及CSS样式
138 0
|
11月前
|
前端开发
DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作)
DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作)
118 0
|
11月前
|
前端开发 JavaScript
使用JS操作CSS
一.什么是css? Cascading Style Sheets 通常称为CSS样式表或层叠样式表(级联样式表) CSS用于控制网页的外观 (HTML是用于控制网页结构的,JS是控制网页的行为) Css让界面变得更加美观
|
12月前
|
前端开发 流计算
《css揭秘》- 47个不为人知的高阶操作🔥(下篇20-47, 7K长文多图预警)(六)
《css揭秘》- 47个不为人知的高阶操作🔥(下篇20-47, 7K长文多图预警)(六)
109 0
|
12月前
|
前端开发
《css揭秘》- 47个不为人知的高阶操作🔥(下篇20-47, 7K长文多图预警)(五)
《css揭秘》- 47个不为人知的高阶操作🔥(下篇20-47, 7K长文多图预警)(五)
61 0