分享更有价值
被信任是一种快乐

怎么使用CSS Flex和Grid布局实现3D骰子

文章页正文上

今天小编给大家分享一下怎么使用CSS Flex和Grid布局实现3D骰子的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,来定义骰子六个面的 HTML 结构:下面来实现每个面和每个点的的基本样式:实现效果如下:(1)一个点HTML 结构如下:实现第一个免费云主机、域名面,只需要让它水平和垂直方向都居中即可:justify-content:center:使点与主轴(水平)的中心对齐。align-items:center:使点与交叉轴(垂直)的中心对齐。代码实现如下:现在第一面是这样的:(2)两个点HTML 结构如下:首先来将第二个面的父元素设置为flex布局,并添加以下属性:justify-content: space-between:将子元素放置在 flex 容器的开头和结尾。现在点的位置如下:这时,第一个点在正确的位置:左上角。而第二个点需要在右下角。因此,下面来使用 align-self 属性单独调整第二个点的位置:align-self: flex-end:将项目对齐到 Flex 容器的末尾。现在第二面是这样的:(3)三个点HTML 结构如下:可以通过在第二面放置另一个中心点来实现第三面。align-self: flex-end:将项目对齐到 Flex 容器的末尾。align-self: center:将项目对齐到 Flex 容器的中间。现在第三面是这样的:如果想要第一个点在右上角,第三个点在左下角,可以将第一个点的 align-self 更改为 flex-end,第二个点不变,第三个点无需设置,默认在最左侧:现在第三面是这样的:(4)四个点HTML 结构如下:在四个点的面中,可以将其分为两行,每行包含两列。一行将在 flex-start ,另一行将在 flex-end 。并添加 justify-content: space-between 以便将其放置在骰子的左侧和右侧。接下来需要对两列点分别进行布局:将列设置为flex布局;将flex-direction设置为column,以便将点放置在垂直方向上将justify-content设置为space-between,它将使第一个点在顶部,第二个点在底部。现在第四面是这样的:(5)五个点HTML 结构如下:第五面和第四面的差异在于多了中间的那个点。所以,可以基于第四面,来在中间增加一列,样式如下:现在第五面是这样的:还需要对中间的点进行调整,可以设置 justify-content 为 center 让它垂直居中:现在第五面是这样的:(6)六个点HTML 结构如下:第六个面的布局和第四个几乎完全一样,只不过每一列多了一个元素,布局实现如下:现在第六面是这样的:骰子每个面其实可以想象成一个 3 x 3 的网格,其中每个单元格代表一个点的位置:+—+—+—+
| a | b | c |
+—+—+—+
| d | e | f |
+—+—+—+
| g | h | i |
+—+—+—+要创建一个 3 x 3 的网格,只需要设置一个容器元素,并且设置三个大小相同的行和列:这里的 fr 单位允许将行或列的大小设置为网格容器可用空间的一部分,这上面的例子中,我们需要三分之一的可用空间,所以设置了 1fr 三次。我们还可以使用 repeat(3, 1fr) 将 1fr 重复 3 次,来代替 1fr 1fr 1fr。还可以使用定义行/列的grid-template速记属性将上述代码进行简化:每个面所需要定义的 HTML 就像是这样:所有的点将自动放置在每个单元格中,从左到右:现在我们需要为每个骰子值定位点数。开始时我们提到,可以将每个面分成 3 x 3 的表格,但是这些表格并不是每一个都是我们需要的,分析骰子的六个面,可以发现,我们只需要以下七个位置的点:+—+—+—+
| a | | c |
+—+—+—+
| e | g | f |
+—+—+—+
| d | | b |
+—+—+—+我们可以使用grid-template-areas属性将此布局转换为 CSS:因此,我们可以不使用传统的单位来调整行和列的大小,而只需使用名称来引用每个单元格。其语法本身提供了网格结构的可视化,名称由网格项的网格区域属性定义。中间列中的点表示一个空单元格。下面来使用grid-area属性为网格项命名,然后,网格模板可以通过其名称引用该项目,以将其放置在网格中的特定区域中。:nth-child()伪选择器允许单独定位每个点。现在六个面的样式如下:可以看到,1、3、5的布局仍然是不正确的,只需要重新定位每个骰子的最后一个点即可:这时所有点的位置都正确了:对于上面的 CSS,对应的 HTML分别是父级为一个p标签,该面有几个点,子级就有几个span标签。代码如下:整体的 CSS 代码如下:上面我们分别使用 Flex 和 Grid 布局实现了骰子的六个面,下面来这将六个面组合成一个正方体。首先对六个面进行一些样式修改:定义它们的父元素:其中,transform-style: preserve-3d;表示所有子元素在3D空间中呈现。这里的transform 的角度不重要,主要是便于后面查看。此时六个面的这样的:看起来有点奇怪,所有面都叠加在一起。不要急,我们来一个个调整位置。首先将第一个面在 Z 轴移动 100px:第一面就到了所有面的上方:因为每个面的宽高都是 200px,所以将第六面沿 Z 轴向下调整 100px:第六面就到了所有面的下方:下面来调整第二面,将其在X轴向后移动 100px,并沿着 Y 轴旋转 -90 度:此时六个面是这样的:下面来调整第二面的对面:第五面,将其沿 X 轴的正方向移动 100px,并沿着 Y 轴方向选择 90 度:此时六个面是这样的:下面来调整第三面,道理同上:此时六个面是这样的:最后来调整第五面:此时六个面就组成了一个完整的正方体:下面来为这个骰子设置一个动画,让它转起来:最终的效果如下:以上就是“怎么使用CSS Flex和Grid布局实现3D骰子”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注云技术行业资讯频道。

相关推荐: jquery延迟对象怎么使用

这篇文章主要介绍“jquery延迟对象怎么使用”,在日常操作中,相信很多人在jquery延迟对象怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery延迟对象怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册