<body>
<div style=" width:50pxheight:50pxbackground-color:#F00border-radius:25px">
<span style="height:50pxline-height:50pxdisplay:blockcolor:#FFFtext-align:center">4</span>
</div>
</body>
首先我们需要分析一下整个牌的构造,以普通数字牌1为例,共可分为5个部分,分别是1、外框2、颜色3、上下角标数字4、里面的白色椭圆5、中间的大数字
对应不同的部分,我们将其分解为5部分的html代码并为其添加class,1、卡牌背景2、卡牌颜色(由于布局相同只有颜色不同,故将颜色抽出成为单独的类)3、上下角标数字4、白色椭圆背景5、大数字
以下均采用代码和效果图对比的方式展示效果
布好局之后,为其添加样式。首先新建css样式表,并将其关联至html文件
首先写背景的样式,按牌的比例写出宽高,留白使用padding来写,css3的新特性我们使用了如图的圆角和阴影,为牌制造立体的感觉
然后来写牌的背景颜色,Uno牌一共有黑红黄绿蓝5种颜色,因此我们只需要事先定义好这五种颜色,之后将其对应的类名添加进来就可以了。
另外,因为上下角标的数字需要使用绝对定位,因此它们的父级元素就需要定义为相对定位
下面来写上下角标的数字,由于这里使用的是em行内元素标签,因此设置宽高的时候要记得display:inline-block。
绝对定位到需要的位置,然后将右下角的数字使用css3的旋转函数180度旋转,就可以制造出倒过来的数字了
中间的白色椭圆要怎么画呢,我们知道border-radius的值与宽高相等可以画出圆形,那么当它的值为宽的一半比高的一半时,则可以画出椭圆形,这时我们再将它旋转到合适的角度,就可以得到想要的椭圆
最后就是中间的数字,由于它是椭圆形的子元素,因此椭圆形旋转的时候,它也跟着一起旋转,要想让它摆在一个比较正的位置,还应将它旋转回来。并为它挑选一个合适的字体
至此,我们的普通数字牌已经写好了
css是个神奇的东西,在学习的过程中你会发现绘画和艺术的美,金字塔是世界八大奇迹之一,设计精巧,计算精密,令世人赞叹。那么如何用CSS画一个金字塔呢?
人丑话不多,先看一下效果
金字塔是由5个面组成的,即4个侧面和1个底面。我们可以把它看作是一个童年时期玩过的元宝,或者端午节戴在身上的福字。为什么这么说呢?
“横看成岭侧成峰”,我们看金字塔的俯视图是不是会看到这样一个图形,如下图所示
这是一个平面图形,如果让这个平面图形具有立体的效果不就是一个金字塔了么。即将上图的(0,0)沿着x轴旋转一定角度即可实现。
接下来就是绘制“元宝”的形状,侧面是4个三角形,底面是一个正方形。实现三角形可以采用 clip-path 的属性对可视区域进行裁剪。
由上图可知: clip-path 的只能兼容 高版本浏览器 。polygon代表多边形,所以利用该属性可以绘制多如下图形:
有了上述的图形之后,我们需要进行特殊的处理,才能得到我们想要的形状。因为我们要搭建金字塔,所有我们塔边的高度或者宽度需要大于底部的宽度和长度,不然的话无法搭成塔尖而形成如下图形:
故需设置大于底部宽和高,我们这里选取为高度为200px,宽度为100px,宽度需要和底部宽度保持一致。
假设我们现在已经有一个金字塔,我们可以取它的一个横截面如下图:
通过sin函数
解上面反三角函数求得A大约为75deg,以此类推我们可以算出其他图形旋转角度。
将上述的两种三角形通过适当的平移和旋转,得到如下图形:
合并之后得到如下图形
通过使用css3中的3D转化属性,将上图进行转化即可:
由上图可知:transform-style:preserve-3d兼容是支持高版本浏览器,支持部分ie浏览器
以上就是本文的全部内容,全部都是由css实现包括:
<img src="图标.jpg" class='xuanzhuan' />
.xuanzhuan{animation:xz 1s linear infinite }@keyframes xz{
from {transform:rotate(0deg)}
to{transform:rotate(360deg)}
}infinite 旋转不限次数,也可以改成1,旋转一次