大家好,不知道你们是否和我一样存在这样的困惑呢,虽然 CSS 入门容易,但是其内容太多,好多属性看了似是而非,觉得自己看懂了,到自己用的时候又犯难了,看到漂亮的效果还是无从下手,这主要还是自己对新属性亲自动手实践的练习太少啦,因此不能进行灵活应用。不可否认 CSS 总让一些人找不到感觉,其实学好 CSS 真的没有太多的捷径,和JS 编程一样,要同等重视对待,不要因为简单而忽视,要多看和多练,因为现在的 CSS 不再是以前的 CSS 啦。
比如这两本书《 CSS 权威指南第四版》,1000多页,买了好几个月我到现在还没看完,文字实在太枯燥了,看完了忘,忘了继续看,实在看不下去,不知道大家有没有同样的感受呢?
好了,废话不多说,今天我们要做的一个案例就是做一个常见的例子:在不少网站右侧都有一个固定浮动的留言图标,我们点击这个图标,就会侧滑显示留言内容面板。你也许会说这个不简单吗,使用 JQ 就能轻松实现,但是我想说的是,为了网站的性能,能用 CSS 实现的尽量不要用 JS ,因为现在CSS已足够强大。
今天这个例子,我们将使用纯CSS实现这个效果,这里我们将用到“CSS checkbox hack”的技术,效果如下图所示:
一、创建 HTML 结构
基于上面的效果图,我们要创建三个元素,一个 checkbox 元素以及对应的 label 标记,和一个表单面板元素。
这里用到了一个 CSS 特性值得大家关注下:<label> 标签的 for 属性用于指定与哪个表单元素进行关联,扩大表单元素的点击区域,我们点击 label 元素标记,其对应的表单元素将会被聚焦选中。
这个特性是我们实现这个案例的技巧之一,再结合 CSS checkbox 的伪类选择器进行留言面板的显示与隐藏,这样我们就可以摆脱 JS 来实现这个案例。
基于以上思路 ,我们开始动手吧,首先我们先放置 checkbox,和其对应的 label,最后添加表单面板和相关的表单元素。
我们将通过表单的 id 属性与表单中label元素的 for 值与其关联,最终我们完成了 HTML 结构如下段代码所示:
<input type="checkbox" id="mycheckbox">
<label for="mycheckbox" class=