skew
transform属性では下記のtransform関数を記述することでアフィン変換を指定する. 横方向の傾斜[angle]
縦方向の傾斜[angle]
https://svg-hosting.vercel.app/api/svg?url=https://scrapbox.io/api/code/issac-37765679/skew/x.svg
こいつかァ〜cFQ2f7LRuLYP.icon
linearを別の函数に替えるとできる
x軸方向のせん断効果を得る.一般的な用語でないため判りにくいが要は横方向に傾けるといった風に憶えれば良い. code:x.svg
<style>
@keyframes skewAnimation {
0% { transform: skewX(0deg); }
25% { transform: skewX(30deg); }
50% { transform: skewX(0deg); }
75% { transform: skewX(-30deg); }
100% { transform: skewX(0deg); }
}
animation: skewAnimation 2s linear infinite;
transform-origin: center center ;
}
</style>
<rect x="0" y="0" width="100%" height="100%" fill="#f6f6f6" />
<g id="icon">
<rect x="1" y="1" width="1" height="1" fill="#5c89c0"/>
<rect x="2" y="1" width="1" height="1" fill="#9cbce3"/>
<rect x="1" y="2" width="1" height="1" fill="#e4d7b5"/>
<rect x="2" y="2" width="1" height="1" fill="#6e733b"/>
</g>
</svg>
https://svg-hosting.vercel.app/api/svg?url=https://scrapbox.io/api/code/issac-37765679/skew/y.svg
y軸方向のせん断効果を得る.先ほどとは異なり今度は縦方向に傾けると考えれば良い. code:y.svg
<style>
@keyframes skewAnimation {
0% { transform: skewY(0deg); }
25% { transform: skewY(45deg); }
50% { transform: skewY(0deg); }
75% { transform: skewY(-45deg); }
100% { transform: skewY(0deg); }
}
animation: skewAnimation 2s linear infinite;
transform-origin: center center ;
}
</style>
<rect x="0" y="0" width="100%" height="100%" fill="#f6f6f6" />
<g id="icon">
<rect x="1" y="1" width="1" height="1" fill="#5c89c0"/>
<rect x="2" y="1" width="1" height="1" fill="#9cbce3"/>
<rect x="1" y="2" width="1" height="1" fill="#e4d7b5"/>
<rect x="2" y="2" width="1" height="1" fill="#6e733b"/>
</g>
</svg>