今天给大家分享用css给正方形画对角线的方法,我们可以用linear-gradient()线性渐变来实现、或者用伪元素 三角形来实现,还可以用clip-path属性来实现等等,接下来我们就来详细了解一下。
使用单个标签,如何实现下图所示的斜线效果。也就是如何使用 CSS 画斜线?
这种类似于表格的斜线效果,细细研究一下,还是有一些挺有趣的方法可以实现之。
我们假定我们的 HTML
结构如下:
<div></div>
假定高宽各为 100px,在单个标签局限内,看看能有多少种方法实现。
这个应该属于看到需求第一眼就可以想到的方法了。
这里我们使用 伪元素 画出一条直线,然后绕 div 中心旋转 45deg ,再缩放一下就可以得到。
简单的一张流程图:
代码示例:
div { position: relative; margin: 50px auto; width: 100px; height: 100px; box-sizing: border-box; border: 1px solid #333; // background-color:#333; line-height: 120px; text-indent: 5px; } div::before { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 50px; box-sizing: border-box; border-bottom: 1px solid deeppink; transform-origin: bottom center; // transform:rotateZ(45deg) scale(1.414); animation: slash 5s infinite ease; } @keyframes slash { 0% { transform: rotateZ(0deg) scale(1); } 30% { transform: rotateZ(45deg) scale(1); } 60% { transform: rotateZ(45deg) scale(1.414); } 100% { transform: rotateZ(45deg) scale(1.414); } }
这种方法使用了背景的线性渐变实现,渐变背景很重要的一点是,虽然名字唤作渐变,但是也是可以画出实色而非渐变色。
我们选定线性渐变的方向为 45deg,依次将渐变色值设为:transparent
-> deeppink
-> deeppink
->transparent
。
transparent
为透明色值。
就像这样简单的一句,即可实现斜线效果:
div{ background: linear-gradient(45deg, transparent 49.5%, deeppink 49.5%, deeppink 50.5%, transparent 50.5%); }
完整css代码:
div{ position:relative; margin:50px auto; width:100px; height:100px; box-sizing:border-box; border:1px solid #333; line-height:120px; text-indent:5px; background: linear-gradient(45deg, transparent 49.5%, deeppink 49.5%, deeppink 50.5%, transparent 50.5%); }
接下来两种方法就有点为了斜线而斜线的感觉。
利用 CSS border ,是可以轻松实现一个类似这样的三角形的:
CSS 代码如下:
div{ border:50px solid transparent; border-left:50px solid deeppink; border-bottom:50px solid deeppink; }
类似这样,配合 div 的白色底色,即可得到一条斜线:这里,我们使用 div 的两个 伪元素
画出两个大小不一的三角形,然后通过叠加在一起的方式,实现一条斜线。
完整css代码:
body{ background:#eee; } div{ position:relative; margin:50px auto; width:100px; height:100px; box-sizing:border-box; border:1px solid #333; background:#fff; line-height:120px; text-indent:5px; } div::before{ content:""; position:absolute; left:0; bottom:0; width:0; height:0; border:49px solid transparent; border-left:49px solid deeppink; border-bottom:49px solid deeppink; animation:slash 6s infinite ease; } div::after{ content:""; position:absolute; left:0; bottom:0; width:0; height:0; border:48px solid transparent; border-left:48px solid #fff; border-bottom:48px solid #fff; animation:slash2 6s infinite ease; } @keyframes slash{ 0%{ transform:translate(-50px); } 30%{ transform:translate(0px); } 100%{ transform:translate(0px); } } @keyframes slash2{ 0%{ transform:translate(-100px); } 30%{ transform:translate(-100px); } 60%{ transform:translate(0px); } 100%{ transform:translate(0px); } }
clip-path
是啥?可以算是 CSS3 的新增属性,或者准确来说是 SVG 的 <path> 的 CSS 版本。
使用 clip-path
,我们可以定义任意想要的剪裁路径。
本文不深入探讨
clip-path
,可以先移步 MDN 或者其他关于 clip-path 讲解的文章学习一下。
使用 clip-path
的多边形规则 polygon
,也可以轻松制作一个三角形(本题中,我们依然借助伪元素来使用clip-path
):
CSS 代码如下:
div { width: 100px; height: 100px; -webkit-clip-path: polygon(0 0, 0 100px, 100px 100px, 0 0); background: deeppink; }
可以看到 CSS 代码,主要 polygon(0 0, 0 100px, 100px 100px, 0 0)
中,其实是一系列路径坐标点,整个图形就是由这些点围起来的区域。
所以使用 clip-path
加上两个伪元素我们可以像 解法三
一样制作出斜线。
当然,我们也可以换一种方法,殊途同归,解法三也可以这样做,看看下面的效果图:
完整css代码
body{ background:#eee; } div{ position:relative; margin:50px auto; width:100px; height:100px; box-sizing:border-box; // border:1px solid deeppink; background-color:deeppink; line-height:120px; text-indent:5px; } div::before{ content:""; position:absolute; left:0px; top:0; right:0; bottom:0; -webkit-clip-path: polygon(0 0, 0 100px, 100px 100px, 0 0); background:#fff; border:1px solid #333; transform:translateX(-120px); animation:move 5s infinite linear; } div::after{ content:""; position:absolute; left:0; top:0; right:0; bottom:0; -webkit-clip-path: polygon(100px 99px, 100px 0, 1px 0, 100px 99px); background:#fff; border:1px solid #333; transform:translateX(120px); animation:move 5s infinite linear; } @keyframes move{ 40%{ transform:translateX(0px); } 100%{ transform:translateX(0px); } }
关于用css给正方形画对角线的方法就介绍到这了,上述示例有一定的借鉴价值,有需要的朋友可以参考学习,希望大家阅读完这篇文章能有所收获,想要了解更多请关注 群英网络其它相关文章。
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2018 群英 版权所有 茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号-36 粤公网安备 44090202000006号 粤工商备P091701000595
两个鬼故事公司起名 带婷字南通企业起名游戏名字起名字任天堂明星大乱斗下载男孩子属鼠起名宝生琉璃朔字起名字吉利吗因为是朋友呀在线观看女法医辣手摧夫记上海电视剧频道绝世武魂全文免费阅读指旺理财erp软件公司起名焱字起名白蚁公司起名姓顾的男孩取名起名大全给咨询公司起甚么名字中国式关系电视剧公司个性起名ai起名字木命怎么起名子教案怎么写起名 姝属猪起名宜用字男姓名八字起名免费金刚不坏大寨主山河同在给自己的小组起什么名字好给猫起名字起什么最可爱的掼蛋规则少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了