#html #css #vue.js
Вопрос:
Я новичок в vue.js и я хочу спросить, могу ли я создать ограничивающую рамку для любого элемента? Эта ограничивающая рамка выглядит как поле просмотра в svg
примере, в котором я поставил этот флажок, как этот флажок
И вот код, чтобы сделать поле флажка
/* checkbox aspect */
[type="checkbox"]:not(:checked) label:before,
[type="checkbox"]:checked label:before {
content: '';
position: absolute;
left: 0;
top: 0;
width: 1.4em;
height: 1.4em;
border: 1px solid #aaa;
background: #FFF;
border-radius: .2em;
box-shadow: inset 0 1px 3px rgba(0,0,0, .1), 0 0 0 rgba(203, 34, 237, .2);
-webkit-transition: all .275s;
transition: all .275s;
}
/* checked mark aspect */
[type="checkbox"]:not(:checked) label:after,
[type="checkbox"]:checked label:after {
content: '✕';
position: absolute;
top: .525em;
left: .18em;
font-size: 1.375em;
color: #CB22ED;
line-height: 0;
-webkit-transition: all .2s;
transition: all .2s;
}
И то, что я хочу сделать, это создать ограничивающую рамку 32 пикселей для этого флажка, эта ограничивающая рамка должна быть аналогична в viewbox
svg
Вы можете увидеть сетку значков и правила здесь. Давайте предположим, что центральная точка находится там, где должен быть флажок, а затем у них есть ограничивающая рамка (синий прямоугольник).
Комментарии:
1. Можете ли вы привести пример того, чего вы пытаетесь достичь? Может быть, образ? Прямо сейчас вы могли бы получить ответы в самых разных направлениях
2. @fditz да, только что отредактировал мой вопрос.
3. Все еще трудно понять ваши намерения. Не могли бы вы предоставить желаемый результат?
4. Я думаю, что то, на что вы ссылаетесь, называется «наложением». Поэтому вам нужно что-то, что накладывается на другие компоненты с некоторой прозрачностью. Это правда? Вам нужно общее решение или что-то конкретное для вашего компонента? (конкретика, конечно, проще)
5. @konekoya У меня не было набора для дизайна, но это может быть «наложение», как сказал фдиц.
Ответ №1:
Хорошо, вот, надеюсь, что-то, что, по крайней мере, направит вас по вашему пути:
Если у вас есть объект-оболочка, вы можете поместить выбранный вами элемент внутрь и создать элемент «наложение» :
<div class="wrapper">
<div class="overlay"></div>
<div class="content">I am a content</div>
</div>
Теперь только с помощью CSS вы можете размещать содержимое внутри, как стопку, где наложение является самым верхним элементом. Для этого вы можете воспользоваться position
недвижимостью.
Я использовал flex для примера, просто чтобы лучше позиционировать материал. Я также дал оболочке фиксированный размер, чтобы лучше проиллюстрировать идею, но теоретически ее можно было бы опустить (в этом случае она будет расти до тех пор, пока страница не станет 100% шириной ребенка… если ширина родителя установлена, она вырастет до 100%).
div.wrapper{
display: flex;
justify-content: center;
align-items: center;
position: relative;
width: 300px;
height: 300px;
}
div.overlay{
position:absolute;
width: 100%;
height: 100%;
}
div.overlay:hover{
background-color: #0000FFAA; /*Transparency is controlled by the last two hex-numbers (AA in this case)*/
}
div.content{
background-color: red;
}
При наведении курсора мыши он покажет наложение (из-за правила наведения), но если вам нужно, вы можете управлять этим с помощью свойства Vue или чего-то еще и просто скрыть/показать наложение в зависимости от того, как установлено свойство.
Вы можете увидеть результат в этом на этом jsfiddle: https://jsfiddle.net/r4tfumqe/3/
Комментарии:
1. Помогает ли это или вам нужна еще какая-то помощь в этом?