介绍

Section Waves 长这样

     

左边是没有 waves, 右边是加了 waves. 它的作用就是点缀. 让画面有一点 "Design" 的感觉.

参考

YouTube – CSS Wavy Background Tutorial | Section Dividers | FREE

原理

它并不是靠 CSS 做出来的. 它是 SVG. CSS 只负责一些简单的定位, 控制 width 之类的而已.

有许多线上网站可以直接做出这类的 SVG.

shapedivider.app

getwaves.io

softr – Beautiful SVG Waves

softr – Create Beautiful SVG Shapes (可以做一些菱形变种)

Step by Step

进入 shapedivider.app 网站

点击 view code, 把 HTML 和 CSS 拷贝下来

放进 HTML 和 CSS 中就可以了.

HTML

放到 section 的结尾处

  <body>
<header>
<div class="custom-shape-divider-bottom-1675137656">
<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 120" preserveAspectRatio="none">
<path d="M321.39,56.44c58-10.79,114.16-30.13,172-41.86,82.39-16.72,168.19-17.73,250.45-.39C823.78,31,906.67,72,985.66,92.83c70.05,18.48,146.53,26.09,214.34,3V0H0V27.35A600.21,600.21,0,0,0,321.39,56.44Z" class="shape-fill"></path>
</svg>
</div>
</header>
<section>
<h1>Hello World</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore et fugiat adipisci iusto earum deleniti animi dicta vitae ratione assumenda itaque, eaque rerum dolore fuga dolores, sequi quasi explicabo laborum magni! Enim laboriosam aperiam tempore consectetur officiis corporis est, veniam, alias quisquam facilis commodi soluta molestias voluptate, exercitationem architecto similique!</p>
</section>
</body>

CSS

body {
header {
background-image: url('../images/tifa1.jpg');
background-size: cover;
background-position: center;
height: 60vh; position: relative;
.custom-shape-divider-bottom-1675137656 {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
overflow: hidden;
line-height: 0;
transform: rotate(180deg);
} .custom-shape-divider-bottom-1675137656 svg {
position: relative;
display: block;
width: calc(142% + 1.3px);
height: 50px;
} .custom-shape-divider-bottom-1675137656 .shape-fill {
fill: #ffffff;
}
}
section {
padding-block: 3rem 5rem;
padding-inline: 1rem;
min-height: 50vh; h1 {
font-size: 3rem;
color: red;
font-weight: 500;
}
p {
margin-top: 1rem;
font-size: 1.5rem;
line-height: 1.5;
}
position: relative;
z-index: 0;
}
}

搞定.

简单的 Section Design (without SVG)

如果不想搞 waves 也可以用一些简单的 design. CSS 就可以做出来了

比如

好不好看是其次, 我们来看看它如何实现. (学点 CSS 呗)

HTML

<body>
<header></header>
<section>
<h1>Hello World</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Inventore et fugiat adipisci iusto earum deleniti animi dicta vitae ratione assumenda itaque, eaque rerum dolore fuga dolores, sequi quasi explicabo laborum magni! Enim laboriosam aperiam tempore consectetur officiis corporis est, veniam, alias quisquam facilis commodi soluta molestias voluptate, exercitationem architecto similique!</p>
</section>
</body>

一个 header 图, 一个 section 字. 简单明了.

CSS

body {
header {
background-image: url('../images/tifa1.jpg');
background-size: cover;
background-position: center;
height: 60vh;
}
section {
padding-block: 2rem 5rem;
padding-inline: 1rem;
min-height: 50vh;
h1 {
font-size: 3rem;
color: red;
font-weight: 500;
}
p {
margin-top: 1rem;
font-size: 1.5rem;
line-height: 1.5;
}
}
}

给它一些美化

效果

技巧一: 重叠

首先是让 Hello World 上去, 盖到背景, 如下

这种重叠通常是靠 margin negative 实现的.

section {
margin-top: -80px;
}

效果

由于 section 没有背景色, 所以依然看得见 header 的图片. 只是 Hello World 重叠上去了.

我们不可以直接给 section 背景白色. 因为一旦给了白色, 那么它就全白了

section {
margin-top: -80px;
background-color: white;
}

效果

那怎么办呢?

技巧二 : overlay background

两个蓝色区块是 overlay, 背景色是 white. 是它们覆盖了 header 的背景图.

第二个区块利用了 transform skew 做出了斜线. 第一个区块则负责弥补第二个区块 skew 后左下角的缺口.

CSS

section {
position: relative;
z-index: 0;
&::before {
content: '';
position: absolute;
width: 20%;
height: 80px;
background-color: white;
top: 0;
left: 0;
z-index: -1;
} &::after {
content: '';
position: absolute;
width: 80%;
height: 80px;
background-color: white;
top: 0;
left: 0;
z-index: -1;
transform: skew(45deg);
}
}

这样就搞定了.

极端做法 clip any thing

还有一种做法只用 clip 就可以搞出任何形状了.

参考: Creative Section Breaks Using CSS Clip-Path

首先利用 Figma Pen 勾画出要 clip 的形状 (什么形状都画的出来了...)

然后 conver to relative clip path, 让它可以 responsive

最后用 svg + css 来完成

<svg class="svg">
<clipPath id="my-clip-path" clipPathUnits="objectBoundingBox"><path d="data..."></path></clipPath>
</svg>
<div class="clipped"></div>

css

.svg {
position: absolute;
width: 0;
height: 0;
}
.clipped {
-webkit-clip-path: url(#my-clip-path);
clip-path: url(#my-clip-path);
}

我觉得工程有点大。

CSS & JS Effect – Section Design Waves的更多相关文章

  1. css+js+html基础知识总结

    css+js+html基础知识总结 一.CSS相关 1.css的盒子模型:IE盒子模型.标准W3C盒子模型: 2.CSS优先级机制: 选择器的优先权:!important>style(内联样式) ...

  2. 用html+css+js做打地鼠小游戏

    html 代码 first.html <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  3. HTML/CSS/JS编码规范

    最近整理了一份HTML/CSS/JS编码规范,供大家参考.目录:一.HTML编码规范二.CSS编码规范三.JS编码规范 一.HTML编码规范 1. img标签要写alt属性 根据W3C标准,img标签 ...

  4. 前端工程师面试问题归纳(一、问答类html/css/js基础)

    一.参考资源 1.前端面试题及答案整理(一) 2.2017年前端面试题整理汇总100题 3.2018最新Web前端经典面试试题及答案 4.[javascript常见面试题]常见前端面试题及答案 5.W ...

  5. CSS & JS 制作滚动幻灯片

    ==================纯CSS方式==================== <!DOCTYPE html> <html> <head> <met ...

  6. 【转】Maven Jetty 插件的问题(css/js等目录死锁)的解决

    Maven Jetty 插件的问题(css/js等目录死锁,不能自动刷新)的解决:   1. 打开下面的目录:C:\Users\用户名\.m2\repository\org\eclipse\jetty ...

  7. Css Js Loader For Zencart

    Css Js Loader 描述:这个插件很早就出来了,可能知道人非常少 这个插件的功能是整合所有的网站的CSS和JS内容到一个文件里边. 因为CSS和JS文件到了一个文件,加快了程序的运行 在配合其 ...

  8. 购物车数字加减按钮HTML+CSS+JS(有需要嫌麻烦的小伙伴拿走不谢)

    之前在写详情页的时候,如下图 因为自己嫌麻烦,就去看其他网站是怎么写的,想直接拿来用,后来看来看去觉得写得很麻烦,于是最后还是决定自己写,附上HTML+CSS+JS代码,一条龙一站式贴心服务2333 ...

  9. vs合并压缩css,js插件——Bundler & Minifier

    之前做了一个大转盘的抽奖活动,因为比较火,部分用户反馈看不到页面的情况,我怀疑js加载请求过慢导致,所以今天针对之前的一个页面进行调试优化. 首先想到的是对页面的js和css进行压缩优化,百度了下vs ...

  10. nginx资源定向 css js路径问题

    今天玩玩项目,学学nginx发现还不错,速度还可以,但是CSS JS确无法使用,原来Iginx配置时需要对不同类型的文件配置规则,真是很郁闷,不过想想也还是很有道理.闲暇之际,把配置贴上来.#user ...

随机推荐

  1. Vulnhub-ICA01

    简介 名称:ICA: 1 发布日期:2021 年 9 月 25 日 难度:容易 描述:根据我们情报网络的信息,ICA 正在开展一个秘密项目.我们需要弄清楚这个项目是什么.获得访问信息后,请将其发送给我 ...

  2. SpringBoot实战:轻松实现接口数据脱敏

    引言 在现代的互联网应用中,数据安全和隐私保护变得越来越重要.尤其是在接口返回数据时,如何有效地对敏感数据进行脱敏处理,是每个开发者都需要关注的问题.本文将通过一个简单的Spring Boot项目,介 ...

  3. UE5 射线检测排除隐藏的Actor

    0x00 Unreal Engine 5(UE5)以其卓越的性能和直观的开发工具在游戏开发领域占据了重要地位.本系列将深入探讨UE5中射线检测的关键概念,着重介绍处理隐藏Actor的技巧. 0x01. ...

  4. [oeasy]python0073_进制转化_eval_evaluate_衡量_oct_octal_八进制

    进制转化 回忆上次内容 上次了解的是 整型数字类变量 integer 前缀为i   ​   添加图片注释,不超过 140 字(可选)   整型变量 和 字符串变量 不同 整型变量 是 直接存储二进制形 ...

  5. 如何立刻读取在MySQL中自动生成的主键

    在写一个接口时,我们需要对两个表分别动刀,但是我们需要前一个表的主键作为下一个表的功能外键, 如果使用mybatisplus,insert完成之后便可以直接在对象中取出这个id值 如果使用mybati ...

  6. oracle数据库状态查询

    oracle数据库状态查询(表空间,表空间利用率,是否自动扩展,IOPS,MBPS,数据库总大小) 排除了('SYSAUX', 'USERS', 'SYSTEM','UNDOTBS1') 结果示例 - ...

  7. MySQL常用语句(经常容易忘记)

    MySQL常用语句 一.连接MySQL 格式: mysql -h <主机地址> -u<用户名> -p<用户密码> --port=<端口号> 1.例1:连 ...

  8. DNS在架构中的使用

    1 介绍 DNS(Domain Name System,域名系统)是一种服务,它是域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址数串. ...

  9. 台式机,华硕主板z390ws,cpu为i7-9700k 安装Ubuntu18.04系统 使用独立显卡工作 (但是显示器HDMI线缆插在主板的HDMI插槽)开机进入系统运行几分钟后自动重启,此时主板显示错误码为AMI错误

    如题: 手上有这样一台新的工作站,配置为华硕主板z390ws,cpu为i7-9700k ,独立显卡为技嘉2060super, 安装Ubuntu18.04系统 . 在主板bios中进行设置(设置使用 P ...

  10. 决定了,今日起开始准备弃用京东JD

    估计京东是为了节约开支,然后开始大比例的把快递物流业务进行外包了,这直接导致服务质量的直线下滑,10多年前我选择弃用当当网而选择京东JD就是因为当时当地的当当网快递是用沈阳晚报的快递上门的,快递员连P ...