最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是: 群英 > 开发技术 > web开发 >
用css怎样给正方形画对角线?这些方法很实用
PHP中文网发表于 2021-09-15 18:43 次浏览

今天给大家分享用css给正方形画对角线的方法,我们可以用linear-gradient()线性渐变来实现、或者用伪元素 三角形来实现,还可以用clip-path属性来实现等等,接下来我们就来详细了解一下。

    使用单个标签,如何实现下图所示的斜线效果。也就是如何使用 CSS 画斜线?

    这种类似于表格的斜线效果,细细研究一下,还是有一些挺有趣的方法可以实现之。

    我们假定我们的 HTML 结构如下:

<div></div>

    假定高宽各为 100px,在单个标签局限内,看看能有多少种方法实现。

    法一、CSS3 旋转缩放

    这个应该属于看到需求第一眼就可以想到的方法了。

    这里我们使用 伪元素 画出一条直线,然后绕 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

    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给正方形画对角线的方法就介绍到这了,上述示例有一定的借鉴价值,有需要的朋友可以参考学习,希望大家阅读完这篇文章能有所收获,想要了解更多请关注 群英网络其它相关文章。

标签: css画对角线
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
上一篇: html页面背景图片居中效果怎样实现?
下一篇: CSS实现动画效果,有什么好用的技巧吗?
相关信息推荐
推荐内容
热门关键词
python for语句 python列表去重 css样式的写法 css3阴影效果 css增加边框 css对话框 Python迭代器 python列表操作 Python双向队列 python猜数字游戏 python数字类型 vue删除cookie javascript类 如何卸载node.js node更改安装路径 css设置分辨率 css图片失真 css设置文本不可选中 html输入框 python判断质数 javascript变量 PyCharm安装 python随机漫步图 python的sum函数 python输出语句 python数字转汉字 css间距设置 css添加两张背景图片 css伪元素 vuex
热门信息
  • MySQL增量备份与恢复如何实现?
    2021-03-02
  • 【Git&GitHub教程】GitLab服务器环境搭建步骤分享
    2021-03-13
  • Composer2.0向下不兼容致使无法安装插件?
    2021-03-10
  • 好用的VSCode技巧你知道吗?VSCode新手指南
    2021-03-13
  • Notepad 搜索栏在哪里找?
    2021-02-19
  • 执行一句SQL会有哪些情况出现?
    2021-03-02
  • redis数据库可以用来存储用户信息吗?
    2021-03-02
  • mac 如何通过sublime命令行启动?
    2021-02-26
  • MySQL8.0.22安装及配置步骤分享
    2021-03-02
  • 这些PHPmyadmin漏洞以及拿shell你了解多少?
    2021-03-02
  • 两个鬼故事公司起名 带婷字南通企业起名游戏名字起名字任天堂明星大乱斗下载男孩子属鼠起名宝生琉璃朔字起名字吉利吗因为是朋友呀在线观看女法医辣手摧夫记上海电视剧频道绝世武魂全文免费阅读指旺理财erp软件公司起名焱字起名白蚁公司起名姓顾的男孩取名起名大全给咨询公司起甚么名字中国式关系电视剧公司个性起名ai起名字木命怎么起名子教案怎么写起名 姝属猪起名宜用字男姓名八字起名免费金刚不坏大寨主山河同在给自己的小组起什么名字好给猫起名字起什么最可爱的掼蛋规则少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

    两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化