使用CSS 3创建不规则图形

CSS 之 图片九宫格变幻效果 本篇博客用于讲解如何实现图片九宫格变幻的样式效果,将图片分为九块填充在3×3的的九宫格子元素中,并结合`grid`、`hover`、`transition`等CSS属性,实现元素`hover`时,九宫格子元素合并为一张完整图片的动画效果。为了简化代码,demo中通过JS设置CSS变量的方法,优化了元素背景的设置过程,减少了代码的繁杂度。最后还结合js的点击事件实现了一个简易的点击拼图demo。 阅读详情

前言

CSS 创建复杂图形的技术即将会被广泛支持,并且应用到实际项目中。本篇文章的目的是为大家开启它的冰山一角。我希望这篇文章能让你对不规则图形有一个初步的了解。

现在,我们已经可以使用CSS 3 常见不规则复杂图形了(点击链接查看),如下图所示:

image

使用CSS创建的图形,无法内置文字或实现文字环绕效果。因此,如何实现不规则图形和文字复杂布局也成为了一个热议话题。

今天我们就来介绍一下如何实现这个效果。文章中我们将阐述如何使用 CSS创建不规则图形,实现不规则的文本布局。学会如何创建不规则图形之后,你就可以发挥想象力,创建唯美的CSS页面了,下图既是使用该技术创建的《爱丽丝梦游仙境》效果图:

image

注:这是CSS的最新技术,所以对浏览器版本要求较高。如果需要查看在线示例你需要确保浏览器支持这个CSS技术。在本文中我也将提供一些效果截图查看效果。

 

声明图形

我们需要使用shape-outside 属性声明不规则图形。当前, shape-outside 属性只能被应用于浮动元素,并且只能应用于块级元素。如果需要在非块级元素上使用这些属性,必须先把元素声明为块级。

Shape-* 值有三种赋值方式: 自动,基本图形或者图片链接。如果被设置为自动,浮动元素将继续作为传统的盒模型进行渲染。如果你还不熟悉盒模型,请参考CSS盒模型,这是阅读本篇文章的基础。

绘制方法包括:rectangle、inset-rectangle、circle、ellipse或polygon方法等。你可以通过链接查看详细的描述。

如果属性被设置为图片链接, 浏览器会按照图片的“alpha通道”来绘制图形形状。

 

在元素上创建坐标系

声明了CSS 图形之后,我们首先需要创建将用于绘制图形的坐标系。

坐标系是非常必要的,因为图形需要依据此坐标系上的点阵进行绘制。shape-* 属性是基于盒模型的,为了使它启作用,需要明确指定盒子的大小,限制不规则图形在盒子范围内,它也将被用于创建绘制坐标系,坐标系的起点位于形盒子左上角。如果没有明确宽和高声明, shape-* 属性将不启作用。

 

设置自定义图形的背景色

应用了自定义图形,它的盒模型仍然存在,其它传统的样式设置将作用于盒模型范围。例如,下面这个例子中,

我们仅仅想创建一个浮动圆形,并设置这个圆形的背景色。按照正常的思路理解,效果应该是这样的:

image

但是当设置了盒子的背景色后,你会发现和预期的效果不同,效果如下:

clip_image001

在上图中我们看到背景色被应用到盒模型范围,而不是我们预想的圆形内。

那么,我们应该怎样设置圆形的背景色呢?这就引出了一个新的CSS样式: clip-path 。clip-path 用于限制当前样式的作用范围。在下面的例子中你将看到它的使用方法。 

提醒

现在,shape-outside 属性只作用域浮动的元素,并且仅限制于在块级元素上应用。使用这些属性定义的元素,其周围的文本将依赖于图形形状排布。未来的CSS 形状将不仅仅限制与应用于浮动元素上,我们将不仅仅可以在文本外部的图形上做文章,完全可以在其内部定义自定义图形,实现如下效果:

image

实例-使用shape-outside 创建环绕于自定义形状的浮动文本

 

我们从一个简单的例子开始。在实例中我们将创建一个自定义图形,并且内置文本流,最终效果图如下(文章末尾提供实例下载链接):clip_image002

 

例子中我们拥有两个容器,用于设置自定义形状和嵌套文本内容。代码如下:

<div class="container">

  <div class="shaped"></div>

  <div class="content">

    <h1><span>La</span> Tour <br/>Eiffel</h1>

    <p>Lorem Ipsum.....</p>

  </div>

</div>

 

首先我们需要声明浮动区域的DIV节点,并且使用固定值设置大小。代码如下:

.container{

  overflow:hidden;

  height: 100vh;

  width: 100vw;

}

.shaped{

  float:left;

  height:100vh;

  width:40vw;

  float:right;

  background: black url(../images/eiffel.jpg) center top no-repeat;

  background-size:cover;

}

 

现在坐标系已经创建成功,接下来我们将要绘制图形了。可以通过两种方式来绘制图形:

使用polygon()

我们可以使用polygon() 方法来计算图形范围。这个方法从坐标系中获取多个点用于绘制图形,每个点由(x, y)值定位。 例子中我们将要创建一个非常简单的多边形,如下图所示:

clip_image002[7]

坐标点的单位可以是固定值,或者百分比。在这个例子中我们将以百分比的形式设置点阵位置。接下来我们需要应用这个样式在浮动元素上。

.shaped{

/*…*/

  shape-outside: polygon(0 0, 100% 0, 100% 100%,30% 100%);

  shape-margin: 20px;

}

 

应用以上的样式后,一个不规则的图形-梯形产生了。

可以看到代码中使用了shape-margin 属性,它用于设置图形和文本内容之间的边距。

接下来需要添加背景图,需要注意在添加背景图之后,它将被应用于盒模型,目前为止效果如下:

clip_image002[9]

所以,为了达到预期效果,我们需要设置clip-path 属性,并且设置其范围和shape-outside 属性相同。

.shaped{

/*…*/

  clip-path: polygon(0 0, 100% 0, 100% 100%,30% 100%);

}

 

现在,我们就通过polygon() 方法实现了目标效果。

 

使用图片链接

我们也可以通过图片(严格说是拥有通明区域的图片)来创建不规则图形,依据图片的“alpha通道” 生成不规则图形。

例如,替代polygon() 声明方法。我们可以设置shape-outside 属性值为图片URI,浏览器就会自动依据图片来绘制不规则图形。

clip_image002

图片中的透明部分将被声明为文本元素的浮动部分。其余部分被声明为不规则图形。代码如下:

.shaped{

/*…*/

  shape-outside: url(/images/mm.png);

  shape-image-threshold: 0.5;这个属性用于设置浮动区域透明度范围

}

 

上述的两种方法都拥有各自的优缺点。例如,如果图形过于复杂,通过图片方法比手动计算图形绘制节点更方便。

 

源码下载

有趣的css3自定义图形 最近在做了一个项目,很漂亮的画面,里面的元素不泛有一些不规则的图形,为了不使用图片去做,我想到了强大的Css3,想看看是否有些属性可以帮助我来用代码去实现,于是,我在查找资料中找到了如下的一些非常棒的东东,我把它记录下来,如果有小伙伴和我一样需要用到此类,也可以不留痕迹的拿走去用~ 1、制作圆形: 要使用CSS来制作一个圆形,我们需要一个div,被给它设置一个ID 圆形在设置CSS时要设置宽度... 阅读详情

相关推荐

CSS3实现不规则排列lightbox效果

当今比较流行的不规则图片排列效果,虽然结果还是类似lightbox效果,但是这个效果更佳微妙一些 请使用支持CSS3浏览器浏览

如何实现不规则的Div外部形状?

如何实现不规则的Div外部形状? 一般在我们用html写出来的div都是方形的div,如果我们要写不规则的div要怎么办呢?我们可以使用css3的transparent或者border-radius或者transform来实现。 1、设置圆形的div 代码展示: &lt;style&gt; .div1{ width: 100px; height: 100px; bac...

qq_42988963的博客 1万+

ArcGIS基础:CAD数据转换为GIS数据(符号化显示、数据转换、线转面、空间连接)

1、符号化显示: CAD数据加载进来有很多列表,包含了点【point】、线【polyline】、面【polygon】、标注数据【Annotation】等数据,本次实验我们需要用到的是面数据,也就是.dwgPolygong格式的数据。如下图所示: 把数据加载进来,然后在2处打开属性表,查看CAD数据的属性表,打开后可以发现【layer】图层表示就是地块的用地性质,它就是符号化显示的依据。 我们在数据上右键【属性】,打开图层属性,找到【符号系统】,选择类别中的【唯一值】,然后在【值字段】下拉选择【layer】,

yuanYW7556的博客 2万+

css 图片排列

&lt;%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage=""%&gt; &lt;HTML&gt; &lt;head&gt; &lt;title&gt;ff&lt;/title&gt; &lt;!

网站开发初中级代码参考-转载 247

《揭秘 BME688人工智能压力湿度温度气体传感器:气体检测的多面能手》:此文为AI自动生成

BME688 是博世推出的一款具有人工智能和集成高线性度高精度压力、湿度、温度传感器的气体传感器,专为移动和联网应用开发,尺寸紧凑且低功耗。BME688 作为一款先进的传感器,在多个领域展现出卓越的性能。它采用了坚固而紧凑的 3.0 x 3.0 x 0.9 mm³ 封装,这种小巧的尺寸使其能够轻松应用于对空间要求严格的移动设备和联网应用中。同时,低功耗的特性也使得它在能源有限的环境下能够长时间稳定运行。

zheng_ruiguo的专栏 1927

Cadence IC618/Spectre231安装避坑指南:详解License配置、环境变量隔离与依赖检查

本文详细介绍了Cadence IC618/Spectre231的安装与配置避坑指南,包括许可证系统精妙控制、环境隔离模块化实践、依赖管理进阶技巧以及长期维护的黄金法则。通过实战案例和解决方案,帮助工程师构建稳定可靠的EDA工作环境,提升芯片设计效率。

weixin_28683065的博客 460

使用CSS 3创建不规则图形 文字围绕

前言 CSS 创建复杂图形的技术即将会被广泛支持,并且应用到实际项目中。本篇文章的目的是为大家开启它的冰山一角。我希望这篇文章能让你对不规则图形有一个初步的了解。 现在,我们已经可以使用CSS 3 常见不规则复杂图形了(点击链接查看),如下图所示: 使用CSS创建的图形,无法内置文字或实现文字环绕效果。因此,如何实现不规则图形和文字复杂布局也成为了一个热议话题。 今天我们就来介绍一下如...

weixin_34297704的博客 183

使用IDF和VSCode构建ESP32的开发环境

本文主要介绍构建使用IDF和VS-CODE 工具构建ESP32的开发环境的详细步骤,还应用IDF和VS CODE创建ESP32的项目文件,并实现编译和下载功能。

mftang的博客 6818

css 不规则边角_CSS3绘制不规则图形的一些方法示例

前言CSS 创建复杂图形的技术即将会被广泛支持,并且应用到实际项目中。本篇文章的目的是为大家开启它的冰山一角。我希望这篇文章能让你对不规则图形有一个初步的了解。现在,我们已经可以使用CSS 3 常见不规则复杂图形了,如下图所示:使用CSS创建的图形,无法内置文字或实现文字环绕效果。因此,如何实现不规则图形和文字复杂布局也成为了一个热议话题。今天我们就来介绍一下如何实现这个效果。文章中我们将阐述如何...

weixin_39532421的博客 375

企业IT运维实录:批量部署银河麒麟V10-SP1,Ghost镜像与UKey激活实战

本文详细介绍了企业级银河麒麟V10-SP1操作系统的批量部署全流程,包括标准化镜像制作、自动化封装技术、网络化部署方案及UKey集群激活方案。通过实战案例和技术要点解析,帮助企业IT运维团队大幅提升部署效率,确保系统安全与稳定性。

weixin_30729609的博客 387

图像去雾常见数据集

上述数据集涵盖了室内、室外、真实和合成等多种场景,可以满足不同研究需求。在选择数据集时,建议根据具体任务的应用场景和目标选择合适的数据集,例如真实雾天图像适合模型的实际应用验证,而合成数据则适合模型的快速迭代和训练。希望本文能为从事图像去雾研究的朋友提供一些帮助!

m0_68604571的博客 6333

css3创建多边形clip属性,可用来绘制不规则图形了

本文转载于:猿2048网站css3创建多边形clip属性,可用来绘制不规则图形了 .path1 { clip-path: polygon(5px 10px, 16px 3px, 16px 17px); } .path2 { clip-path: polygon(3px 5px...

chuluxie3918的博客 233

NCCL 核心集体通信操作深度解析:从原理到优化实践

操作逻辑:若 N 个 GPU 各持有一段数据(大小为 S),通信后每个 GPU 会持有所有 N 段数据(总大小为 N×S)。典型场景:多卡推理结果聚合、模型并行中间结果同步。操作逻辑:N 个 GPU 各持有数据,通过归约(求和、取平均等)运算后,所有 GPU 获得相同结果。典型场景:数据并行训练的梯度聚合(如 SGD 优化器)。操作逻辑:N 个 GPU 各持有 N 份数据分片,通信后每个 GPU 获得所有 GPU 的对应分片。典型场景。

jundao1997的专栏 679

使用CSS 3创建不规则图形

前言 CSS 创建复杂图形的技术即将会被广泛支持,并且应用到实际项目中。本篇文章的目的是为大家开启它的冰山一角。我希望这篇文章能让你对不规则图形有一个初步的了解。 现在,我们已经可以使用CSS 3 常见不规则复杂图形了(点击链接查看),如下图所示: 使用CSS创建的图形,无法内置文字或实现文字环绕效果。因此,如何实现不规则图形和文字复杂布局也成为了一个热议话题。 今天我们就来

xingxingxx2014的专栏 423

EMC设计技巧及经验总结3:TVS的使用

Way back in undergrad circuits class(回到本科时的电路课程), our TA(助教) loved to give uslittle “black box” circuits. We’d measure the voltage and current characteristics, then have to determine what compone

snmplink的博客 2410

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

CSS3:优雅地绘制不规则ICON

早上在w3ctech上看到 中国第二届CSS Conf总结 的时候,真是开心极了; 自从去年在慕课网上看了第一届CSS conf 视频之后,整个人都震惊了,原来还有大会是专门用来讨论CSS的,而且分享的CSS知识真是让人眼界大开; 我在博客园写的第一篇博文《布局神器:Flexbox》便是受到第一届CSS Conf的启发; 所以,算是结下了不解之缘;如今看到第二届分享的视频和PPT时...

weixin_33962621的博客 151

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

CSS3中鲜为人知但非常强大的 Clip-Path 属性

在CSS3中,`clip-path`属性可以让我们快速创建各种各样的不规则图形,而无需使用图片或者复杂的绘图工具。它可以帮助我们实现一些非常出色的视觉效果,但遗憾的是它并不是很常见。 `clip-path`属性可以接受多种不同的值,比如`polygon()`、`circle()`、`ellipse()`以及`inset()`等。

(ง •̀_•́)ง 558

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: ASP.NET MVC 5 - 开始MVC5之旅
下一篇: ASP.NET MVC 5 - 控制器
ComponentOne服务团队
博客等级 码龄12年 5粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值