当前位置: 首页 > Web前端 > HTML5

CSStricks-checkbox+label+selector

时间:2023-04-05 01:40:59 HTML5

.flexwidth100%height100%displayflex*box-sizingborder-box&__featsflex-basis28%height100%displayflexjustify-contentspace-around.feat__list显示flexflex-directioncolumnjustify-contentflex-startalign-itemscenter.feat__list_labelsflex-grow1displayflexflex-directioncolumnjustify-contentspace-aroundalign-itemscenter.divider宽度1px高度100%边距02px背景色#000;简介其实这篇文章写到一半的时候,它的名字还叫《重温 Flex 布局》,结果写的时候脑子坏了。附上一张图表达一下我的心情:其实我不是一个喜欢惹事的人。真的,从我游戏的英雄池就可以看出来:沉默屠夫(DOTA2),盖伦(LOL),亚瑟(杀虫剂)。这三个元素是这个《CSS 搞事技巧》的第一部分,不只是要用到下一个《重温 Flex 布局》,而是因为这个技巧确实很基础。核心概念:所谓技能无非就是保存状态(划重点)。例子部分只放了gif图和源码地址。详见技术说明部分(技术通用)。1.switch样式模仿Vuetify的Switches。gif预览:动画源码,在线动画2.关灯效果上面实现了开关,那么简单的联想当然就是开关灯了。Gif预览:动画源码,在线动画小技巧在JavaScript中,我们可以使用变量和DOM来保存状态,在CSS中,我们也可以使用伪类选择器来保存状态,这是CSS的核心,也是上面例子实现的本质。回到正题,就是flex布局,我们简单回顾一下flex布局的相关概念。首先将flex弹性布局的元素声明为flex容器,其子元素称为flexitems。这个flex容器默认有两个轴,一个叫主轴(mainaxis),一个叫侧轴(crossaxis)。整个Flex容器有六个属性,这次只介绍两个:justify-content和align-items(提一下align-content是多行的概念)。列出这两个属性的常用值(更多值请参见MDN):.flex{justify-content:flex-start|弹性端|中心|间隔|空间周围;对齐项目:flex-start|弹性端|center;}代码解读本项目是通过VuePress渲染的,所以会用到Vue的语法,不过这里只使用Vue的for循环来解决重复写DOM的问题;效果参考来源。1、标签功能栏和展示栏布置在两侧。首先完成DOM结构:flex__feats为左侧功能栏,flex__exh为显示栏。对齐

对齐
然后使用Flex布局来分他们,因为这次主要不是Flex,就不细说了。.flexwidth100%height100%displayflex*box-sizingborder-box&__featsflex-basis28%height100%displayflexjustify-contentspace-around.feat__list显示flexflex-directioncolumnjustify-contentflex-startalign-itemscenter.feat__list_labelsflex-grow1displayflexflex-directioncolumnjustify-contentspace-aroundalign-itemscenter.divider宽度1px高度100%边距02px背景色#000;可以注意到功能栏的DOM结构是重组的,使用Vue来简单化一下吧:{{feat.title}}{{item}}2.checkbox然后需要一堆checkbox来触发状态,因为DOM解析是深度优先的,CSS中没有parentselector这种东西,虽然有一定的办法hack,所以这堆复选框只需要放在最上面:然后需要隐藏它:.toggle[type="checkbox"]width0height0filteropacity(0)opacity0displaynone3.让选择器生效,你还需要将输入的id绑定到标签:{{item}}Continue使用选择器(selector)获取标签并改变其颜色,证明它是被选中的孩子。例如(完整版):#jusitify-flex-start:checked~.flex__feats.jusitify-flex-startpadding4px4pxbackground-color#5a191b//栗紫色#ffff9//雪白测试绑定:4.在右侧,先给它添加三个元素,帮助我们观察效果:&__exhflex-grow1padding16px.exh__itemwidth15%height15%box-shadow004pxrgba(0,0,0,.5)&:nth-child(1)宽18%高20%&:nth-child(2)宽14%高18%&:nth-child(3)宽15%高15%然后继续使用selector完成最后的任务,例子(完整版):#jusitify-flex-start:checked~.flex__exhdisplayflexjustify-contentflex-start就大功告成了,网上查的有多漂亮最终的CSS是属性的组合。记得跟设计师搞好关系,不然这些属性你都知道,做出来的东西还是丑。。。注意:《重温 Flex 布局》在路上。参考资料Vuetify配色方案:中国色MDN