css实现任意大小、方向和角度的箭头代码

本文主要和大家介绍了使用css实现任意大小、任意方向和任意角度的箭头示例的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助到大家。

网页开发中,经常会使用到 下拉箭头

css实现任意大小、方向和角度的箭头代码

,右侧箭头

css实现任意大小、方向和角度的箭头代码

立即学习“前端免费学习笔记(深入)”;

这样的箭头。 一般用css来实现:

{          display: inline-block;          margin: 72px;          border-top: 24px solid;        border-right: 24px solid;          width: 120px;        height: 120px;          transform: rotate(45deg);     }

登录后复制

因为这是利用p的border-top, border-right,然后通过旋转p来实现的。

任意角度的箭头

这里有个问题: 假如需要一个角度为120度的箭头怎么办呢? 由于border-top, border-right一直是90度, 所以仅仅通过旋转不行。 我们可以先把p 旋转45度, 让它成为一个 菱形 然后再伸缩,达到任意的角度, 这样就可以得到一个 任意角度的箭头。由于用到了旋转和伸缩两种变换,所以需要使用 transform: matrix(a,b,c,d,e,f) 这个变换矩阵。 这里的6个变量组成了一个3介的变换矩阵

任意点p(x,y)的平移, 旋转, 伸缩变换以及他们的各种组合都可以通过这个变换矩阵做到:

注:这里用齐次坐标 来表达一个点。 简单说就是p(x, y) 表示为p'(x’, y’, 1)

平移矩阵

v(x, y) 沿着x轴平移tx, 沿着y轴平移ty。 则有:

x’ = x + txy’ = y + ty

所以平移矩阵:

旋转矩阵

v(x, y) 点绕原点旋转θ到v'(x’, y’)

css实现任意大小、方向和角度的箭头代码

则有:

x = r * cos(ϕ )
y = r * sin(ϕ )

x’ = r * cos(θ + ϕ) = r * cos(θ) * cos(ϕ) – r * sin(θ) * sin(ϕ ) // 余弦公式
y’ = r * sin(θ + ϕ) = r * sin(θ) * cos(ϕ) + r * cos(θ) * sin(ϕ ) // 正弦公式

所以:

x’ = x * cos(θ) – y * sin(θ)
y’ = x * sin(θ) + y * cos(θ)

所以旋转矩阵:

伸缩矩阵

假设x轴,y轴的伸缩率分别是kx, ky。 则有:

x’ = x * kx
y’ = y * ky

所以:

复合变换

如果是对p(x, y)先平移(变换矩阵A), 然后旋转(变换矩阵B), 然后伸缩(变换矩阵C)呢?

p’ =C(B(Ap)) ==> p’ = (CBA)p //矩阵乘法结合率

现在任意角度o的箭头就很简单了:

先把p旋转45度 成为 菱形, 变换为 M1 伸缩x轴, y轴 :

x' = size * cos(o/2) = x * √2 *  cos(o/2)y' = size * sin(o/2) = y *  √2  * sin(o/2)

登录后复制

即: kx = √2 * cos(o/2); ky = √2 * sin(o/2) 这样就得到了任意角度的箭头。 变换为 M2

如果箭头的方向不是指向右侧, 在进行一次旋转就可以得到任意方向的箭头。变换为 M3

那么由于 p’ =C(B(Ap)) ==> p’ = (CBA)p , 我们就可以先计算出 M3 M2 M1,然后对p进行相应的变换,就可以得到任意角度, 任意方向的箭头了。

p的width和height就是箭头的边长, 通过调整可以获取任意边长的箭头。

React组件

为了方便使用, 这个箭头被封装为了一个 React组件。

示例 

简单箭头

css实现任意大小、方向和角度的箭头代码

模拟select

css实现任意大小、方向和角度的箭头代码

发散箭头

css实现任意大小、方向和角度的箭头代码

props

name type default description

degreenumber90箭头的张角, 角度制offsetDegreenumber0箭头的方向,默认指向右边colorstring-箭头的颜色sizestring10px箭头边长

安装使用

npm install rc-arrow --save

登录后复制

import Arrow from 'rc-arrow'class Hw extends Component {    render() {        return (                    )    }}

登录后复制

相关推荐:

纯CSS3实现网页中常见的小箭头实例

纯CSS3实现网页中常见的小箭头实例

纯CSS3实现网页中常见的小箭头实例

以上就是css实现任意大小、方向和角度的箭头代码的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2899988.html

(0)
上一篇 2025年3月10日 23:51:57
下一篇 2025年3月10日 23:52:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 5种css实现左中右布局的方式

    本文主要和大家介绍了css布局实现左中右布局的5种方式的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助到大家。 效果如下: 左中右布局 nbsp;html>                Document  …

    2025年3月10日
    200
  • CSS的伪类内容生成

    这次给大家带来css的伪类内容生成,css的伪类内容生成的伪类有哪些,下面就是实战案例,一起来看一下。 1、 通过 css 向已有的元素上增加新的文本(图片)内容选择器:    1、伪类     向匹配元素之前增加生成的内容     定位到…

    编程技术 2025年3月10日
    200
  • CSS计数器与多列的使用

    这次给大家带来css计数器与多列的使用,css计数器与多列使用的注意事项有哪些,下面就是实战案例,一起来看一下。 通过css 定义一个计数器,在其他元素中可以使用该计数器生成的数字。注意事项:  1、 counter-注意事项   作用:用…

    编程技术 2025年3月10日
    200
  • css文件格式化脚本的方法

    这次给大家带来css文件格式化脚本的方法,css文件格式化脚本的注意事项有哪些,下面就是实战案例,一起来看一下。 #!/usr/bin/python# -*- coding: UTF-8 -*-import sys,osdef format…

    2025年3月10日
    200
  • Css多行字符截取方法详解

    相信有很多同学在写前端页面的时候,都会遇到字符长了需要截取的问题,最简单的方法就是手动去截取,可这样又感觉太low了,今天晚上就来讲讲利用css进行字符的截取,不了解css是如何截取的同学可以和我们一起看看哦! 前言 最近在做响应式系统设计…

    2025年3月10日 编程技术
    200
  • CSS的选择器有哪些常见问题

    这次给大家带来css的选择器有哪些常见问题,处理css的选择器常见问题的注意事项有哪些,下面就是实战案例,一起来看一下。 选择器常见的有哪几种?1.标签选择器p{ }/选择标签名为p的元素/2.类选择器.box{ }/选择class名为bo…

    编程技术 2025年3月10日
    200
  • 简述CSS中clearfix 的原理

    这次给大家带来简述css中clearfix 的原理,使用css中clearfix的注意事项有哪些,下面就是实战案例,一起来看一下。 DemoDemo中的CSS中用到这样一个样式: .clearfix:after{  content: ”;…

    编程技术 2025年3月10日
    200
  • css如何实现毛毛虫爬行动作代码分享

    毛毛虫儿时大家都有见过,今天想起来写一个爬行的动作,我们先来看一下效果图,具体代码如下所示: html代码:                登录后复制 css代码:  body { background-color: #1B6CB2; ma…

    2025年3月10日
    200
  • css里有哪些长度单位

    这次给大家带来css里有哪些长度单位,使用css里的长度单位注意事项有哪些,下面就是实战案例,一起来看一下。 1.有两种类型的长度单位:相对和绝对。 相对长度单位指定了一个相对于注意事项长度注意事项的单位。使用相对单位的样式表更容易根据不同…

    编程技术 2025年3月10日
    200
  • CSS Tips段落每行渐变色文本效果的实现方法

    今天小编在codepen上看到一个css写的效果。一个段落的每行文本是渐变效果。对于单行文本或单个词实现渐变填充效果并不是什么奇怪的事情,不过对于一个段落的每一行实现一个文本渐变填充的效果。估计还是会令很多人感到好奇。如果你是其中好奇的一员…

    2025年3月10日 编程技术
    200

发表回复

登录后才能评论