【前端demo】CSS border-radius可视化 原生实现

news2024/10/5 12:52:32

文章目录

    • 效果
    • 原理
    • 代码

前端demo系列目录:https://blog.csdn.net/karshey/article/details/132585901

效果

在这里插入图片描述

参考:

Fancy Border Radius Generator (9elements.github.io)

https://border-radius.com/

CSS border-radius 新玩法(含可视化生成工具) - 鬼小妞 - 博客园 (cnblogs.com)

GitHub - florinpop17/app-ideas: A Collection of application ideas which can be used to improve your coding skills.

原理

border-radius的值为百分号:

<!DOCTYPE html>
<html>
<head>
<style> 
div
{
	border:2px solid;
	padding:10px;
	width:300px;
	height:300px;
	border-top-left-radius: 25% 50%;
	border-bottom-right-radius: 25% 50%;
}
</style>
</head>
<body>

<div></div>

</body>
</html>

其中有css代码:

border-top-left-radius: 25% 50%;
border-bottom-right-radius: 25% 50%;

因此:

  • top在左边25%的地方开始有弧度
  • left在上面50%的地方有弧度
  • bottom在右边25%的地方有弧度
  • right在下面50%的地方有弧度
    在这里插入图片描述

值为px同理。

代码

  • 此代码的单位为px
  • 若想要为%的,将r[num] = event.target.value + 'px'改为r[num] = event.target.value + '%'
  • class中的one、two等数字是写样式(位置)用的
  • 每个input表单的data-index属性,可以用来得知是哪个子元素发生了onchange事件(事件委托在父元素),通过event.target.attributes[2].value获取data-index属性

不知道在哪的话可以输出event看看

class对应位置:

在这里插入图片描述
注意:

  • borderTopLeftRadius :是上和左,即1和8
  • borderTopRightRadius :是上和右,即2和3
  • borderBottomRightRadius :是下和右,即5和4(注意顺序!)
  • borderBottomLeftRadius :是下和左,即6和7
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS border-radius</title>
    <style>
        .box {
            height: 400px;
            width: 400px;
            margin: 100px auto;
            position: relative;
            border: 1px solid #9E9E9E;
            background: linear-gradient(45deg, #00bcd4, #d135ec);
        }


        .item {
            width: 40px;
            height: 25px;
            background-color: #d1d0d0;
            border: 1px solid #9e9e9e;
            position: absolute;
        }

        .one {
            top: -35px;
        }

        .two {
            top: -35px;
            right: 0;
        }

        .there {
            right: -55px;
        }

        .four {
            right: -55px;
            bottom: 0;
        }

        .five {
            bottom: -35px;
            right: 0;
        }

        .six {
            bottom: -35px;
        }

        .seven {
            left: -55px;
            bottom: 0;
        }

        .eight {
            left: -55px;
        }
    </style>
</head>

<body>
    <div class="box" id="box" onchange="Onchange(event)">
        <input type="text" class="item one" data-index="1">
        <input type="text" class="item two" data-index="2">
        <input type="text" class="item there" data-index="3">
        <input type="text" class="item four" data-index="4">
        <input type="text" class="item five" data-index="5">
        <input type="text" class="item six" data-index="6">
        <input type="text" class="item seven" data-index="7">
        <input type="text" class="item eight" data-index="8">
    </div>
</body>

</html>

<script>
    // 左上18
    // 右上23
    // 下右54
    // 左下67
    let r = new Array(9).fill(0);

    function Onchange(event) {
        // 事件委托 获取子元素的data-index:event.target.attributes[2].value
        let num = event.target.attributes[2].value
        r[num] = event.target.value + 'px'
        console.log(r)

        borderRadiusChange()
    }

    function borderRadiusChange() {
        let box = document.getElementById('box')
        let rr = new Array()
        rr.push(r[1], r[8])
        box.style.borderTopLeftRadius = rr.join(' ')
        box.style.borderTopRightRadius = r.slice(2, 4).join(' ')
        // 清空数组
        rr.length = 0
        rr.push(r[5], r[4])
        box.style.borderBottomRightRadius = rr.join(' ')
        box.style.borderBottomLeftRadius = r.slice(6, 8).join(' ')
    }

</script>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【实战】十一、看板页面及任务组页面开发(六) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十八)

文章目录 一、项目起航&#xff1a;项目初始化与配置二、React 与 Hook 应用&#xff1a;实现项目列表三、TS 应用&#xff1a;JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…

【LeetCode-中等题】437. 路径总和 III

文章目录 题目方法一&#xff1a;迭代层序 每层节点dfs 维护一个count变量 题目 方法一&#xff1a;迭代层序 每层节点dfs 维护一个count变量 思路&#xff1a; 层序遍历每一个节点遍历一个节点就对这个节点进行dfsdfs的同时&#xff0c;维护一个count变量&#xff0c;并且…

vue v-on 艾特@

vue v-on 内联代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

恢复已删除的git分支

1.打开对应项目文件夹目录,在目录下执行git命令 2.执行命令 git reflog --dateiso , 找到最后一次commit 的id 3. 执行git checkout -b 新建分支名称 commitId 就会基于commitId这次提交时工作区新建一个分支&#xff0c;就能达到我们找到删除分支的代码效果。 4.直接看ide…

静态路由配置实验(超详细讲解+详细命令行)

系列文章目录 华为数通学习&#xff08;7&#xff09; 前言 一&#xff0c;静态路由配置 二&#xff0c;网络地址配置 AR1的配置&#xff1a; AR2的配置&#xff1a; AR3的配置&#xff1a; 三&#xff0c;测试是否连通 AR1的配置: 讲解&#xff1a; AR2的配置&#…

由于启动计算机时出现了页面文件配置问题,Windows在您的计算机创建了一个临时页面文件...

问题来源&#xff1a;D盘存储空间爆满以后&#xff0c;每次开机电脑开始自动弹窗。 提示信息&#xff1a; 可以点击确定&#xff0c;win10直接跳出虚拟内存设置窗口&#xff0c;如下 选择勾选“自动管理所有驱动器的分页文件大小”&#xff0c;点击确定&#xff0c;没有再弹窗。…

Kubernetes(k8s)上安装Prometheus和Grafana监控

Kubernetes上安装Prometheus和Grafana监控 环境准备Kubernetes准备 安装项目开始安装下载安装的项目安装项目替换镜像替换kube-state-metrics替换prometheus-adapter 修改Service修改alertmanager-service.yaml修改grafana-service.yaml修改prometheus-service.yaml 执行这些ya…

1.10 内存ShellCode注入与格式化

ShellCode 的格式化与注入功能在实战应用中也尤为重要&#xff0c;格式化Shellcode是指将其转换为可执行的二进制格式&#xff0c;使其能够在内存中运行。注入Shellcode是指将格式化的Shellcode注入到另一个进程的内存中&#xff0c;以便在该进程中执行&#xff0c;此类功能也可…

【人工智能】—_逻辑Agent、一般逻辑、Entailment_蕴涵、命题逻辑、前向链接、反向链接、Resolution归结

文章目录 逻辑智能体Knowledge bases一个简单的基于知识的智能体 一般逻辑Entailment 蕴涵Models模型蕴涵与推理 命题逻辑逻辑连接词枚举推理有效性可满足性 推导和证明霍恩子句Forward chaining 前向链接Proof of completeness&#xff08;完备性&#xff09; Backward chaini…

ELK安装、部署、调试 (七)kibana的安装与配置

1.介绍 Kibana 是一个基于浏览器的开源可视化工具&#xff0c;主要用于分析大量日志&#xff0c;以折线图、条形图、饼图、热图、区域图、坐标图、仪表、目标、时间等形式。预测或查看输入源的错误或其他重大事件趋势的变化。Kibana 与 Elasticsearch 和 Logstash 同步工作&am…

java环境的安装 以及大学生认证免费激活IDEA

最近博主也是在学校开始学习了Java&#xff0c;也通过老师知道了可以通过大学生学生证申(bai)请(piao) IDEA的企业版&#xff08;社区版也是够学习用的&#xff09;有很多同学还是没有搞懂便做一下分享。 &#x1f331;博客主页&#xff1a;青竹雾色间. &#x1f618;博客制作…

发布的策略

简介 应用程序升级面临最大挑战是新旧业务切换&#xff0c;将软件从测试的最后阶段带到生产环境&#xff0c;同时要保证系统不间断提供服务。 长期以来&#xff0c;业务升级渐渐形成了几个发布策略&#xff1a;蓝绿发布、灰度发布和滚动发布&#xff0c;目的是尽可能避免因发…

java 八股文 基础 每天笔记随机刷

Component 和 PostConstruct 搭配使用 被Component注解标识的类在应用程序启动时会被实例化&#xff0c;并由Spring容器进行管理。PostConstruct是一个Java注解&#xff0c;用于标记一个方法在类被实例化后自动执行。该方法必须是非静态的&#xff0c;没有参数&#xff0c;且不…

android:控件TextView

一、系统学习Android控制键TextView&#xff0c;我的笔记里面有尝试学着使用自定义控件。 二、具体内容 1.如果在代码中给textView赋值&#xff0c;在xml中也给textView赋值了最后运行出来的结果显示代码中赋的值。因此得出结论&#xff0c;代码中的赋值会覆盖xml所附的值。 …

物联网闸道器开发整合嵌入式套件加速物联网创新

物联网闸道器开发整合套件&#xff0c;以可靠的物联网软体平台与开放式闸道器整合技术&#xff0c;协助加速物联网创新。整组套件包括软硬件整合的系统(Intel Celeron J1900平台与Windows 7 Embedded)、物联网软体平台服务(WISE-PaaS)、软体开发套件和技术支援服务以及Microsof…

OpenCV实战(30)——OpenCV与机器学习的碰撞

OpenCV实战&#xff08;30&#xff09;——OpenCV与机器学习的碰撞 0. 前言1. 机器学习简介2. 基于局部二值模式的最近邻人脸识别3. 图像表示与人脸识别4. 完整代码小结系列链接 0. 前言 随着人工智能的发展&#xff0c;许多机器学习算法开始用于解决机器视觉问题。机器学习是…

SoC 总线结构学习记录之系统存储总线(System Memory Bus)与私有设备总线

蜂鸟 E203 SOC总线结构&#xff1a;  蜂鸟 E203 内核 BIU 的系统存储接口 ICB 连接系统存储总线&#xff0c;通过其访问 SoC 中的若干存储组件&#xff0c;譬如 ROM&#xff0c;Flash 的只读区间等。  蜂鸟 E203 内核 BIU 的私有设备接口 ICB 连接私有设备总线&#xff0c…

Java 编程中的魔法之门:探索I/O流的奇妙世界

文章目录 什么是I/O流&#xff1f;I/O 流的层次结构1. 字节流&#xff08;Byte Streams&#xff09;2. 字符流&#xff08;Character Streams&#xff09;3. 缓冲流&#xff08;Buffered Streams&#xff09;4. 数据流&#xff08;Data Streams&#xff09;5. 对象流&#xff0…

STM32 FREERTOS osDelayUntil()异常

问题&#xff1a; 在使用osDelayUntil&#xff08;&#xff09;进行固定延时时发现不起作用&#xff0c;程序不能按照预期的延时进行执行&#xff08;比延时要快&#xff09;。 #define taskMBSysManage_Delay_TIME 1000 TickType_t xLastWakeTime; xLastWakeTime xTaskGe…

软考A计划-网络工程师-复习背熟-广域网和接入网技术和因特网

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…