この記事では、CSS を使用して任意のサイズ、任意の方向、任意の角度の矢印の例を実現するための関連情報を主に紹介します。編集者が非常に優れていると考えたので、参考として共有します。エディターをフォローして見てみましょう。Web 開発では、ドロップダウン矢印
や右矢印
などの矢印がよく使用されます。 これは通常、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 度回転してひし形にし、それを任意の角度まで引き伸ばすことで、任意の角度の矢印を得ることができます。回転とスケーリングの 2 つの変換が使用されるため、変換行列 transform:matrix(a,b,c,d,e,f)
を使用する必要があります。 ここでの 6 つの変数は 3 次元の変換行列を形成します
任意の点 p(x,y) の平行移動、回転、拡大変換、およびさまざまな組み合わせは、この変換行列を通じて実現できます: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 + tx
y' = y + ty
所以平移矩阵:
旋转矩阵
v(x, y) 点绕原点旋转θ到v'(x', y')
则有:
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
注: ここでは、均質な点を使用して点を表現します。コーディネート。 簡単に言うと、p(x, y) は p'(x', y', 1) で表されます
x' = x + txしたがって、変換行列:
y' = y + ty
回転行列
v(x, y)点巻き 原点をv'(x', y')にθ回転

次に:
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 の矢印は非常に簡単になります: |
---|---|---|---|
npm install rc-arrow --save |
つまり: kx = √2 * cos(o/2); ky = √2 * sin(o/2) これにより、任意の角度の矢印が得られます。 | M2 | |
M3 | に変換すると、 | M2 | M1 を計算できます。 p に対応する変換を実行すると、任意の角度と方向の矢印を取得できます。pの幅と高さは矢印の辺の長さであり、調整することで任意の辺の長さの矢印を得ることができます。 |
React コンポーネント | 使いやすいように、この矢印は React コンポーネントとしてカプセル化されています。 | 例 | |
モック選択 |
安装使用
npm install rc-arrow --save
import Arrow from 'rc-arrow' class Hw extends Component { render() { return ( <Arrow size="20px" color="red"/> ) } }
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上がCSS を使用して任意のサイズ、方向、角度の矢印を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

在css中,可用list-style-type属性来去掉ul的圆点标记,语法为“ul{list-style-type:none}”;list-style-type属性可设置列表项标记的类型,当值为“none”可不定义标记,也可去除已有标记。

区别是:css是层叠样式表单,是将样式信息与网页内容分离的一种标记语言,主要用来设计网页的样式,还可以对网页各元素进行格式化;xml是可扩展标记语言,是一种数据存储语言,用于使用简单的标记描述数据,将文档分成许多部件并对这些部件加以标识。

在css中,可以利用cursor属性实现鼠标隐藏效果,该属性用于定义鼠标指针放在一个元素边界范围内时所用的光标形状,当属性值设置为none时,就可以实现鼠标隐藏效果,语法为“元素{cursor:none}”。

转换方法:1、给英文元素添加“text-transform: uppercase;”样式,可将所有的英文字母都变成大写;2、给英文元素添加“text-transform:capitalize;”样式,可将英文文本中每个单词的首字母变为大写。

在css中,可以利用“font-style”属性设置i元素不是斜体样式,该属性用于指定文本的字体样式,当属性值设置为“normal”时,会显示元素的标准字体样式,语法为“i元素{font-style:normal}”。

在css中,rtl是“right-to-left”的缩写,是从右往左的意思,指的是内联内容从右往左依次排布,是direction属性的一个属性值;该属性规定了文本的方向和书写方向,语法为“元素{direction:rtl}”。

在css3中,可以用“transform-origin”属性设置rotate的旋转中心点,该属性可更改转换元素的位置,第一个参数设置x轴的旋转位置,第二个参数设置y轴旋转位置,语法为“transform-origin:x轴位置 y轴位置”。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1
使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ホットトピック



