CSS系列(39)-- Shapes详解
前端技术探索系列:CSS Shapes详解 ✨
致读者:探索形状布局的艺术 👋
前端开发者们,
今天我们将深入探讨 CSS Shapes,这个强大的形状布局特性。
基础形状 🚀
圆形与椭圆
/* 基础圆形 */
.circle {width: 300px;height: 300px;float: left;shape-outside: circle(50%);clip-path: circle(50%);margin: 20px;
}/* 椭圆形 */
.ellipse {width: 400px;height: 300px;float: right;shape-outside: ellipse(40% 50%);clip-path: ellipse(40% 50%);
}/* 位置调整 */
.positioned-shape {shape-outside: circle(50% at 30% 50%);clip-path: circle(50% at 30% 50%);
}
多边形
/* 三角形 */
.triangle {width: 200px;height: 200px;float: left;shape-outside: polygon(0 0, 100% 0, 50% 100%);clip-path: polygon(0 0, 100% 0, 50% 100%);
}/* 六边形 */
.hexagon {width: 200px;height: 230px;float: left;shape-outside: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
}
高级特性 🎯
图像形状
/* 图像形状 */
.image-shape {width: 300px;height: 300px;float: left;shape-outside: url('shape.png');shape-image-threshold: 0.5;shape-margin: 20px;
}/* 渐变形状 */
.gradient-shape {width: 200px;height: 400px;float: left;shape-outside: linear-gradient(45deg,transparent 0%,transparent 50%,black 50%,black 100%);
}
动画效果
/* 形状动画 */
.morphing-shape {animation: morph 3s infinite;
}@keyframes morph {0% {shape-outside: circle(50%);clip-path: circle(50%);}50% {shape-outside: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);}100% {shape-outside: circle(50%);clip-path: circle(50%);}
}
创意布局 💫
文本环绕
/* 环绕布局 */
.text-wrap {width: 100%;max-width: 800px;margin: 0 auto;
}.float-shape {width: 300px;height: 300px;float: left;shape-outside: circle(50%);shape-margin: 1rem;margin: 0 1rem 1rem 0;
}/* 双形状环绕 */
.dual-wrap {position: relative;
}.left-shape {float: left;shape-outside: polygon(0 0, 100% 0, 0 100%);
}.right-shape {float: right;shape-outside: polygon(100% 0, 100% 100%, 0 100%);
}
响应式形状
/* 响应式调整 */
.responsive-shape {width: 40vw;height: 40vw;max-width: 400px;max-height: 400px;float: left;shape-outside: circle(50%);clip-path: circle(50%);
}@media (max-width: 768px) {.responsive-shape {width: 100%;height: auto;float: none;shape-outside: none;clip-path: none;}
}
实际应用 ⚡
杂志布局
/* 杂志风格 */
.magazine-layout {column-width: 300px;column-gap: 2rem;
}.pull-quote {width: 200px;height: 200px;float: left;shape-outside: polygon(0 0, 100% 0, 100% 100%, 30% 100%);padding: 2rem;margin: 1rem;
}
装饰效果
/* 装饰形状 */
.decorative-shape {position: absolute;width: 300px;height: 300px;shape-outside: circle(50%);background: linear-gradient(45deg, var(--primary-color), var(--secondary-color));opacity: 0.1;z-index: -1;
}/* 形状组合 */
.shape-composition {position: relative;
}.shape-layer-1 {shape-outside: circle(40%);clip-path: circle(40%);
}.shape-layer-2 {shape-outside: polygon(0 0, 100% 0, 50% 100%);clip-path: polygon(0 0, 100% 0, 50% 100%);transform: rotate(45deg);
}
最佳实践建议 💡
-
设计考虑
- 内容适配
- 响应式设计
- 视觉平衡
- 可访问性
-
性能优化
- 形状复杂度
- 动画性能
- 资源加载
- 降级方案
-
开发建议
- 模块化设计
- 复用形状
- 维护性考虑
- 浏览器兼容
-
创意技巧
- 形状组合
- 动态效果
- 交互增强
- 视觉层次
写在最后 🌟
CSS Shapes为我们提供了创建独特视觉布局的强大能力,通过合理运用这一特性,我们可以构建出更加富有创意和专业的网页设计。
进一步学习资源 📚
- Shapes规范
- 布局技巧集
- 创意案例库
- 实战项目分析
如果你觉得这篇文章有帮助,欢迎点赞收藏,也期待在评论区看到你的想法和建议!👇
终身学习,共同成长。
咱们下一期见
💻
相关文章:
CSS系列(39)-- Shapes详解
前端技术探索系列:CSS Shapes详解 ✨ 致读者:探索形状布局的艺术 👋 前端开发者们, 今天我们将深入探讨 CSS Shapes,这个强大的形状布局特性。 基础形状 🚀 圆形与椭圆 /* 基础圆形 */ .circle {widt…...
AI 神经网络在智能家居场景中的应用
在科技持续进步的当下,智能家居领域正经历着深刻变革,AI 神经网络技术的融入成为推动这一变革的关键力量,为家居生活带来了诸多显著变化与提升,本文将几种常见的AI算法应用做了一下总结,希望对物联网从业者有所帮助。 …...
Rocky DEM tutorial7_Conical Dryer_锥形干燥器
tutorial 7_Conical Dryer_锥形干燥器 文章目录 tutorial 7_Conical Dryer_锥形干燥器0. 目的1. 模型介绍2. 模型设置2.1设置physics2.2 导入几何2.3 设置motion2.4 Boundary边界设置2.5 设置材料2.6设置材料间相互作用2.7 创建粒子2.8 设置颗粒进口2.9 求解器设置3. 后处理Enj…...
CSS(二):美化网页元素
目录 字体样式 文本样式 列表样式 背景图片 字体样式 字体相关的 CSS 属性: font-family:设置字体font-size:设置字体大小font-weight:设置字体的粗细(如 normal, bold, lighter 等)color:…...
平方根无迹卡尔曼滤波(SR-UKF)算法,用于处理三维非线性状态估计问题
本MATLAB 代码实现了平方根无迹卡尔曼滤波(SR-UKF)算法,用于处理三维非线性状态估计问题 文章目录 运行结果代码概述代码 运行结果 三轴状态曲线对比: 三轴误差曲线对比: 误差统计特性输出(命令行截图&…...
【论文笔记】Visual Alignment Pre-training for Sign Language Translation
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Visual Alignment Pre-tra…...
NLP基础知识 - 向量化
NLP基础知识 - 向量化 目录 NLP基础知识 - 向量化 NLP基础知识 - 向量化目录什么是向量化?为什么需要向量化?常见的向量化方法1. 词袋模型(Bag of Words, BoW)2. TF-IDF(词频-逆文档频率)3. 词嵌入&#x…...
JAVA学习笔记_MySQL进阶
文章目录 存储引擎InnoDB引擎MyISAM引擎Memory存储引擎的选择 索引索引数据结构Btree(多路平衡查找树)BTreeHash索引为什么InnoDQB存储引擎采用Btree索引结构 索引分类思考题 索引语法索引性能分析慢查询日志show profiesexplain 索引的使用规则最左前缀法则索引失效SQL提示覆盖…...
ffmpeg: stream_loop报错 Error while filtering: Operation not permitted
问题描述 执行ffmpeg命令的时候,报错:Error while filtering: Operation not permitted 我得命令如下 ffmpeg -framerate 25 -y -i /data/workerspace/mtk/work_home/mtk_202406111543-l9CSU91H1f1b3/tmp/%08d.png -stream_loop -1 -i /data/workerspa…...
Vue.use()和Vue.component()
当很多页面用到同一个组件,又不想每次都在局部注册时,可以在main.js 中全局注册 Vue.component()一次只能注册一个组件 import CcInput from /components/cc-input.vue Vue.component(CcInput);Vue.use()一次可以注册多个组件 对于自定义的组件&#…...
javaweb 04 springmvc
0.1 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求,请求了我们…...
[Visual studio] 性能探测器
最近发现VS的profile还是很好用的, 可以找到项目代码的瓶颈,比如发现CPU的每一个函数的时间占比,分析代码耗时分布,和火焰图一样的效果 如何使用 1. 打开你的项目,调整成release状态 2. 点击调试->性能探测器 3…...
【漫话机器学习系列】017.大O算法(Big-O Notation)
大 O 表示法(Big-O Notation) 大 O 表示法是一种用于描述算法复杂性的数学符号,主要用于衡量算法的效率,特别是随着输入规模增大时算法的运行时间或占用空间的增长趋势。 基本概念 时间复杂度 描述算法所需的运行时间如何随输入数…...
IntelliJ IDEA中设置激活的profile
在IntelliJ IDEA中设置激活的profile,可以通过以下步骤进行: 通过Run/Debug Configurations设置 打开Run/Debug Configurations对话框: 在IDEA的顶部菜单栏中,选择“Run”菜单,然后点击“Edit Configurations...”或者…...
Qt 的信号槽机制详解:之信号槽引发的 Segmentation Fault 问题拆析(上)
Qt 的信号槽机制详解:之因信号槽误用引发的 Segmentation Fault 问题拆析(上) 前言一. 信号与槽的基本概念信号(Signal)槽(Slot)连接信号与槽 二. 信号槽机制的实现原理元对象系统(M…...
uniapp中实现APP调用本地通知栏通知、震动、本地提示音或者mp3提醒
要在uniapp中实现APP调用本地通知栏通知、震动和本地提示音或者mp3提醒,你可以使用uni-app提供的原生API和插件来实现。 通知栏通知: 你可以使用uni-app的原生API uni.showToast() 或者 uni.showModal() 来实现通知栏通知的功能。可以在需要发送通知的地…...
ADB 上传文件并使用脚本监控上传百分比
有个需求,需要测试 emmc的外部连续写入性能,使用 ADB 上传一个巨大的文件。并且在上传到一定值时进行干预。 因此但是 adb push 命令本身会 block 运行并且不返回进度,因此需要一个额外的监控脚本。 上传脚本: echo off setloc…...
【数据库】PostgreSQL(持续更新)
目录 K8S 部署基本使用高级特性 K8S 部署 # pg.yaml --- apiVersion: v1 kind: PersistentVolume metadata:name: tv-postgres-pvnamespace: locallabels:storage: tv-postgres-pv spec:accessModes:- ReadWriteOncecapacity:storage: 50Gi # 按需修改,需要保持与…...
overleaf中出现TeX capacity exceeded PDF object stream buffer=5000000的原因和解决方案
在插入pdf 配图后,编译出错提示信息如图,很可能的一个原因是pdf文件大小太大了,最好压缩一下,压缩到1MB以内。...
pyqt5冻结+分页表
逻辑代码 # -*- coding: utf-8 -*- import sys,time,copy from PyQt5.QtWidgets import QWidget,QApplication, QDesktopWidget,QTableWidgetItem from QhTableWidgetQGN import Ui_QhTableWidgetQGN from PyQt5.QtCore import Qt from PyQt5 import QtCore, QtGui, QtWidgets…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...
我认为STM32输入只分为模拟输入 与 数字输入
核心概念解析 模拟输入 (Analog Input) 设计目的:直接连接模拟信号(如ADC采集电压、温度传感器输出) 硬件行为: ✅ 断开内部数字电路(施密特触发器禁用) ✅ 信号直通模拟外设(如ADC、运放&…...
