css clip-path

1 解释

clip-path 属性使用裁剪方式创建元素的可显示区域。区域内的部分显示,区域外的隐藏浏览器会裁剪掉裁剪区域以外的内容,包括: 背景,内容,边框,阴影等,另外也不会捕获裁剪区域之外的hover click等事件。

2 语法

  • basic-shape: 基本图形,包括 inset()circle()ellipse()polygon()
  • clip-source: 通过 url() 方法引用一段 SVG<clipPath> 来作为剪裁路径
  • geometry-box:单独使用时,将指定框的边缘作为剪裁路径,或者配合 basic-shape 使用,用于定义剪裁的参考框(Reference Box)
  • none: 不创建剪切路径。

2.1 basic-shape

一种形状,其大小和位置由 <geometry-box> 的值定义。如果没有指定 <geometry-box>,则将使用 border-box 用为参考框。取值可为以下值中的任意一个:

  • inset() 定义一个 inset 矩形。

参数类型:inset( <shape-arg>{1,4} [round <border-radius>]? )

其中 shape-arg 分别为矩形的上右下左顶点到被剪裁元素边缘的距离(和marginpadding参数类似),border-radius 为可选参数,用于定义 border 的圆角。

Demo:

<html>
  <head>
    <style>
      .inset {
        clip-path: inset(0);
      }
      .inset:hover {
        clip-path: inset(10px 20px 10% 20% round 20px);
      }
    </style>
  </head>
  <body>
    <div>
      <img class="inset" src="./moon.png" />
    </div>
  </body>
</html>

原图:

在这里插入图片描述

hover:

在这里插入图片描述

  • circle()定义一个圆形(使用一个半径和一个圆心位置)。

参数类型:circle( [<shape-radius>]? [at <position>]? )

其中 shape-radius 为圆形的半径,position 为圆心的位置,widthheight分别为被剪裁元素的宽高。

Demo:

<html>
  <head>
    <style>
      .circle {
        clip-path: circle(120px at center);
      }
      .circle:hover {
        clip-path: circle(50px at center);
      }
    </style>
  </head>
  <body>
    <div>
      <img class="circle" src="./moon.png" />
    </div>
  </body>
</html>

原图:

在这里插入图片描述

hover:

在这里插入图片描述

  • ellipse()定义一个椭圆(使用两个半径和一个圆心位置)。

参数类型:ellipse( [<shape-radius>{2}]? [at <position>]? )

其中 shape-radius 为椭圆x、y轴的半径,position 为椭圆中心的位置。

Demo:

<html>
  <head>
    <style>
      .ellipse {
        clip-path: ellipse(120px 100px at 50% 50%);
      }
      .ellipse:hover {
        clip-path: ellipse(100px 50px at 50% 50%);
      }
    </style>
  </head>
  <body>
    <div>
      <img class="ellipse" src="./moon.png" />
    </div>
  </body>
</html>

原图:

在这里插入图片描述

hover:

在这里插入图片描述

  • polygon()定义一个多边形(使用一个 SVG 填充规则和一组顶点)。

参数类型:polygon( [<fill-rule>,]? [<shape-arg> <shape-arg>]# )

其中 fill-rule 为填充规则,即通过一系列点去定义多边形的边界。

Demo:

<html>
  <head>
    <style>
      .polygon {
        clip-path: polygon(0% 50%, 50% 0%, 100% 50%, 50% 100%);
      }
      .polygon:hover {
        transform: rotate(145deg);
        clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
      }
    </style>
  </head>
  <body>
    <div>
      <img class="polygon" src="./moon.png" />
    </div>
  </body>
</html>


原图:

在这里插入图片描述

hover:

在这里插入图片描述

  • path()定义一个任意形状(使用一个可选的 SVG 填充规则和一个 SVG 路径定义)。

Demo:

<html>
  <head>
    <style>
      .path {
        clip-path: path(
          "M  20  240 L  20  80 L 160  80 L 160  20 L 280 100 L 160 180 L 160 120 L  60 120 L  60 240 Z"
        );
      }
      .path:hover {
        transform: rotate(145deg);
      }
    </style>
  </head>
  <body>
    <div>
      <img class="path" src="./moon.png" />
    </div>
  </body>
</html>



原图:

在这里插入图片描述

hover:

在这里插入图片描述

2.2 clip-source

即通过引用一个svg的clipPath 元素来作为剪裁路径。

Demo:

<html>
  <head>
    <style>
      .path {
        clip-path: url("#svgCircle");
      }
    </style>
  </head>
  <body>
    <div>
      <svg>
        <defs>
          <clipPath id="svgCircle">
            <circle cx="100" cy="100" r="50" />
          </clipPath>
        </defs>
      </svg>
      <img class="path" src="./moon.png" />
    </div>
  </body>
</html>

在这里插入图片描述

2.3 geometry-box

如果同 <basic-shape> 一起声明,它将为基本形状提供相应的参考框盒。通过自定义,它将利用确定的盒子边缘包括任何形状边角(比如说,被border-radius定义的剪切路径)。几何框盒可以有以下的值中的一个:

  • margin-box使用margin box作为引用框。

  • border-box使用 border box作为引用框。

  • padding-box使用 padding box作为引用框。

  • content-box使用 content box作为引用框。

  • fill-box利用对象边界框(object bounding box)作为引用框。

  • stroke-box]使用笔触边界框(stroke bounding box)作为引用框。

  • view-box使用最近的 SVG 视口(viewport)作为引用框。如果 viewBox 属性被指定来为元素创建 SVG 视口,引用框将会被定位在坐标系的原点,引用框位于由 viewBox 属性建立的坐标系的原点,引用框的尺寸用来设置 viewBox 属性的宽高值。

clip-path: padding-box circle(50px at 0 100px);

3 场景

3.1 动态裁剪

利用clip-path和过渡实现动态裁减

<html>
  <head>
    <style>
      .box {
        position: relative;
        width: 400px;
        height: 300px;
        overflow: hidden;
        transition: clip-path 0.3s linear;
        clip-path: circle(20px at 44px 44px);
        background: blue;
        color: #fff;
        padding-top: 100px;
      }
      .box:hover {
        clip-path: circle(460px at 44px 44px);
      }
    </style>
  </head>
  <body>
    <div class="box">
      <ul>
        <li>button1</li>
        <li>button2</li>
        <li>button3</li>
      </ul>
    </div>
  </body>
</html>

原图:

在这里插入图片描述

hover:

在这里插入图片描述

3.2 反向裁剪

设置与背景一样颜色

<html>
  <head>
    <style>
      .box {
        position: relative;
        width: 400px;
        height: 300px;
      }
      .mask {
        width: 100%;
        height: 100%;
        border-radius: 50%;
        background-color: orange;
        position: absolute;
      }
      .mask:after {
        content: "";
        position: absolute;
        width: 100%;
        height: 100%;
        clip-path: circle(100px at center);
        background: blue;
      }
    </style>
  </head>
  <body style="background-color: blue">
    <div class="box">
      <div class="mask"></div>
    </div>
  </body>
</html>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/342834.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《JavaScript权威指南》读书笔记1

服创要开始了&#xff0c;选题基本上都是关于ai的&#xff0c;之前写的项目没有和ai有关的&#xff0c;也没有学习过这方面的知识。现在我们组基本上确认的选题是&#xff1a;【A01】基于文心大模型的智能阅卷平台设计与开发【百度】【A01】基于文心大模型的智能阅卷平台设计与…

用 AI 定制龙年红包封面保姆级教程

作者&#xff1a;苍何&#xff0c;前大厂高级 Java 工程师&#xff0c;阿里云专家博主&#xff0c;CSDN 2023 年 实力新星&#xff0c;土木转码&#xff0c;现任部门技术 leader&#xff0c;专注于互联网技术分享&#xff0c;职场经验分享。 &#x1f525;热门文章推荐&#xf…

代码中遇到的问题2

目录 记录: 好处&#xff1a; 问题一&#xff1a; 解答: 问题二: 解答: 常见类型问题: 记录: string connStr ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; 在代码中写上这段代码&#xff0c;将连接数据库的代码语句放到&#xff…

算法练习-替换数字(思路+流程图+代码)

难度参考 难度&#xff1a;简单 分类&#xff1a;字符串 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。以下内容均为个人笔记&#xff0c;旨在督促自己认真学习。 题目 给定一个字符串S,它包含小写字母和数字字符&#xff0…

【GitHub项目推荐--开源2D 游戏引擎】【转载】

microStudio 是一个可在浏览器中运行的游戏引擎&#xff0c;它拥有一套精美、设计精良、全面的工具&#xff0c;可以非常轻松地帮助你创建 2D 游戏。 你可以在浏览器中访问 microStudio.dev 开始搭建你的游戏&#xff0c;当然你可以克隆现有项目或创建新游戏并开始编码&#x…

Go 基本数据

第 2 章 基本数据类型 Go 的数值类型包括了不同大小的整数 、浮点数 、复数&#xff1b; 各种数值类型分别有自己的大小&#xff0c;对正负号支持也各不相同&#xff1b; 1. 整数&#xff08;OK&#xff09; 整数类型&#xff08;整型&#xff09;整数类型Go 语言同时支持 有…

代码随想录算法训练营29期|day28 任务以及具体安排

93.复原IP地址 class Solution {List<String> result new ArrayList<>();public List<String> restoreIpAddresses(String s) {StringBuilder sb new StringBuilder(s);backTracking(sb, 0, 0);return result;}private void backTracking(StringBuilder s,…

VS Code Json格式化插件-JSON formatter

&#x1f9aa;整个文件格式化 按快捷键Shift Alt F &#x1f96a;仅格式化选择内容 需要选择完整的json段落即&#xff1a;{} 或 [] 括起来的部分&#xff0c;再按快捷键Ctrl K F

高分辨率图像合成;可控运动合成;虚拟试衣;在FPGA上高效运行二值Transformer

本文首发于公众号&#xff1a;机器感知 高分辨率图像合成&#xff1b;可控运动合成&#xff1b;虚拟试衣&#xff1b;在FPGA上高效运行二值Transformer Scalable High-Resolution Pixel-Space Image Synthesis with Hourglass Diffusion Transformers We present the Hourgla…

蓝桥杯真题(Python)每日练Day4

题目 OJ编号2117 题目分析 第一种先采用暴力的思想&#xff0c;从第一根竹子开始&#xff0c;找到连续的高度相同的竹子&#xff0c;砍掉这些竹子&#xff0c;一直循环这个方法&#xff0c;直到所有的竹子高度都为1。很明显&#xff0c;依次遍历竹子的高度复杂度为O&#x…

jdk的安装和Tomcat的安装

jdk的安装 双击jdk&#xff0c;然后一路下一步 公共JRE可以关闭&#xff0c;没多大用&#xff0c;反而会占用内存 计算机–>属性–>高级系统设置–>环境变量 系统变量–新建 JAVA_HOMEjdk的存放路径 修改path 在path的最后面添加&#xff08;&#xff1b;%JAVA_H…

SpringBoot整合SSE

目录 1.SseController2. SseServiceSseServiceSseServiceImpl 3.SendMessageTask4.将定时任务加入启动类5.参考资料 1.SseController Slf4j RestController RequestMapping("sse") public class SseController {Autowiredprivate SseService sseService;RequestMappi…

cesium应用篇:静态图添加与平移、缩放

应用说明 添加静态图到指定extent通过键盘事件对static image进行调整 向东、西、南、北移动沿东西、南北方向缩放命令行侧输出当前extent&#xff0c;可用于几何匹配 初始化 Earth 初始化 <!DOCTYPE html> <html lang"en"> <head><meta c…

openai assistants api接入微信机器人,实现类GPTs功能

chatgpt网址:https://chat.xutongbao.top 比普通gpt多了代码解释器功能&#xff0c;和上传训练数据文件的功能&#xff0c;这两个功能就是GPTs拥有的&#xff0c;而普通gpt没有拥有的

前后端分离项目中实现图形验证码

图形验证码在我们的日常生活中时经常用到的&#xff0c;一般用于用户的登录、注册等。 图形验证码在互联网应用中的作用是提高安全性、防止滥用和保护用户隐私。它是一种简单而有效的人机验证技术&#xff0c;帮助保护系统和用户免受自动化攻击的影响。 本次我们通过spring b…

Qt采集本地摄像头推流成rtsp/rtmp(可网页播放/支持嵌入式linux)

一、功能特点 支持各种本地视频文件和网络视频文件。支持各种网络视频流&#xff0c;网络摄像头&#xff0c;协议包括rtsp、rtmp、http。支持将本地摄像头设备推流&#xff0c;可指定分辨率和帧率等。支持将本地桌面推流&#xff0c;可指定屏幕区域和帧率等。自动启动流媒体服…

华为认证的HCIP考实验考试么?

HCIP在考试的时候不考实验&#xff0c;只考笔试&#xff0c;只是不同方向的HCIP认证考试的考试科目不同&#xff0c;有的考一科&#xff0c;有的考二科&#xff0c;有的考三科&#xff0c;具体看方向来定。HCIA和HCIP只考笔试。HCIE考笔试和实验。 虽然HCIP不考实操&#xff0…

MongoDB快速入门

目录 什么是MongoDB&#xff1f; MongoDB与关系型数据库对比 MongoDB应用场景 MongoDB语法 数据库操作 集合操作 安全认证 MongoDB插入指令 MongoDB查询指令 MongoDB更新指令 MongoDB删除指令 内嵌文档和数组 嵌套型的数组 固定&#xff08;封顶&#xff09;集合…

线程的同步和互斥学习笔记

目录 互斥锁的概念和使用 线程通信-互斥 互斥锁的创建和销毁 申请锁-pthread_mutex_lock 释放锁-pthread_mutex_unlock 读写锁的概念和使用 死锁的避免 互斥锁的概念和使用 线程通信-互斥 临界资源 一次只允许一个任务&#xff08;进程、线程&#xff09;访问的共享资…

基于springboot+vue的台球管理系统

摘要 台球管理系统是一款基于Spring Boot和Vue.js技术栈构建的现代化系统&#xff0c;旨在提供全面而高效的台球场馆管理服务。该系统通过整合前后端技术&#xff0c;实现了场馆预约、会员管理、比赛统计等核心功能&#xff0c;为台球场馆管理员和玩家提供了便捷、智能的管理和…