последовательность
Говоря оdivформа, в общем то, что приходит на ум圆形или方形, эти две формы фактически встретились с передним концом95%сценарии применения (95%Откуда взялись данные - -!), но как программист, который не хочет следовать за толпой, все дело в том, чтобы делать вещи.
совместимость
(图片来源于网络) Конечно же, наше творчество ограничивает не воображение, а совместимость. Версия, которая поддерживает браузер, находится на высокой стороне.Если вы работаете над серьезным проектом или не рекомендуется, если это ваш собственный или относительно модный проект, то начните его! (道路千万条,兼容第一条。尝鲜有风险,翻车两行泪。). Не забудьте добавить-webkit-clip-path: polygon()
Несколько мелких дел, чтобы принести их в жертву небесам
- круглый
=>арбуз
clip-path: polygon(100% 100% , 0 100% , 50% 0 );
- квадратный
=>треугольник
clip-path: polygon(0 0 , 0 100% , 100% 50% );
- квадратный
=>стрела
clip-path: polygon(100% 50% , 0 100% , 50% 50% , 0 0);
- Овал
=>Алмаз
clip-path: polygon(50% 100% , 100% 10% , 0 10%);
анализироватьclip-path:polygon()
Сначала нарисуйте диаграмму анализа на основе приведенного выше треугольника.
Вы можете видеть, что скобки состоят из пары значений. В текущем div, соответствующемxа такжеyкоординаты, принимающие подразделенияpxили%(Рекомендуемый процент), разделенные запятыми, значение, написанное после запятой, представляет собой новую точку, новая точка будет соединена с исходной точкой, чтобы сформировать линию, и количество точек не ограничено.
Два вопроса:
- Как только точек становится больше, координаты складываются. Нелегко изменить глаза.
- Поскольку вы сделали внешний интерфейс, вы, должно быть, овладели искусством экстрасенса:
火狐在这个属性的调试上有很好的支持
点击属性旁边的图标,线条就可以随意拖动了,会随着你是`%`还是`px`自动进行调整
- Точки и точки могут быть соединены только прямой линией, поэтому, если я хочу нарисовать фигуру с дугой, мне нужно построить бесчисленное количество точек.
-
К сожалению, хотя этот атрибут также имеет соответствующий кружок
clip-path:circle()эллипсclip-path: ellipse()Но оба нельзя использовать одновременно. И поскольку это свойство обрезается, пока оно превышает диапазон строки, оно будет обрезано, поэтому попробуйте использовать::afterили::beforЗаполнение дуги, эффект неудовлетворительный, обратитесь к этому арбузу. -
Еще минус в том, что лишняя часть отображаться не будет, а обычная box-shadow строится на основе тени этого box, а естественная тень тоже обрезается.
Значит надо датьbox-shadowдобавить внутреннюю теньbox-shadow: inset 3px 2px 16px #bbb;(Но тень будет формироваться не по вашим линиям, она все же по боксу, так что вопрос использования)
анализироватьclip-path:circle()а такжеclip-path: ellipse()
clip-path:circleОн используется для резки кругов, и устройство также поддерживаетсяpxа также%, который предоставляет три параметра(圆形半径 at x方向坐标 y方向坐标)
clip-path: ellipseОтличие от приведенного выше в том, что он разбивает радиус круга наx方向的半径/y方向的半径
анимация
clip-path имеет хорошую поддержку анимационных переходов, вот небольшая демонстрация
.demo_box{
width: 100px;
height: 100px;
border-radius:50%;
background:#ffa700;
clip-path: polygon(0% 100%, 100% 100%, 100% 0%, 0% 0%, 0% 25%, 50% 50%, 0% 80%);
animation:a 1s infinite alternate;
}
@keyframes a {
0%, 10% {
clip-path: polygon(0% 100%, 100% 100%, 100% 0%, 0% 0%, 0% 25%, 50% 50%, 0% 80%)
}
90%, 100% {
clip-path: polygon(0% 100%, 100% 100%, 100% 0%, 0% 0%, 0% 50%, 60% 50%, 0% 60%)
}
}
соответствоватьshape-outsideвставлять графику в текст
shape-outsideа такжеclip-pathвсе имеют соответствующиеpolygon,circle,ellipseИх соответствующие параметры одинаковы, и для вступления в силу элемент div должен быть плавающим.
Бесплатное сканирование QR-кода CSS-анимации
Полосы на маршруте — это проблема Snipping Tool, которой на самом деле нет.
<div class="scan"></div>
.scan {
width: 150px;
height: 150px;
margin: 30px auto;
position: relative;
background: linear-gradient(to left, #108EE9, #108EE9) left top no-repeat, linear-gradient(to bottom, #108EE9, #108EE9) left top no-repeat, linear-gradient(to left, #108EE9, #108EE9) right top no-repeat, linear-gradient(to bottom, #108EE9, #108EE9) right top no-repeat, linear-gradient(to left, #108EE9, #108EE9) left bottom no-repeat, linear-gradient(to bottom, #108EE9, #108EE9) left bottom no-repeat, linear-gradient(to left, #108EE9, #108EE9) right bottom no-repeat, linear-gradient(to left, #108EE9, #108EE9) right bottom no-repeat;
background-size: 3px 20px, 20px 3px, 3px 20px, 20px 3px;
}
.scan::after {
content: '';
width: 140px;
border: 1px solid #BBE2FF;
position: absolute;
left: 5px;
top: 2px;
animation: myfirst 4s infinite;
}
@keyframes myfirst {
from {
top: 2px;
}
to {
top: 144px;
}
}