Как создать вырезанный дизайн границ с помощью CSS

С вырезанным дизайном границ мы можем показать пользователям, что находится под областью границ HTML-элемента. Эта задача обычно решается путем размещения двух или более блочных элементов (в большинстве случаев div) разных размеров друг над другом. Во-первых, это кажется легким решением, но становится все более неприятным, когда вы хотите многократно использовать макет, перемещаться по элементам, оптимизировать дизайн для мобильных устройств или поддерживать код.

В этом посте я покажу вам элегантное решение только для CSS, в котором для достижения того же эффекта используется только один элемент HTML. Этот метод также отлично подходит для доступности, так как он загружает фоновое изображение в CSS, отдельно от HTML.

К концу этого поста вы узнаете, как отобразить фоновое изображение в области границ, чтобы создать вырезанный дизайн границы, который вы можете увидеть ниже. Я также покажу, как вы можете сделать дизайн адаптивным, используя единицы просмотра.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Читайте также: Как создать CSS градиентные цвета границ

Увидеть перо CSS Cutout Border HONGKIAT (@hkdc) на CodePen,
Исходный код
Единственное требование в передней части HTML – это блочный элемент:

Нам нужно будет повторно использовать размеры (ширину и высоту) и значения ширины границы элемента div, поэтому я представлю их как переменные CSS. Переменная –w обозначает ширину блочного элемента .cb, –h обозначает его высоту, –b обозначает ширину границы, а –b2 обозначает ширину границы, умноженную на 2. Позже мы увидим использование последней переменной.

Я оцениваю

<

div> относительно ширины области просмотра, отсюда и использование модуля vw (вы можете использовать фиксированные единицы, если хотите).

.cb {
  – ш: 35 ватт;
  – ч: 40 кВт;
  –b: 4vw;
  –b2: calc (var (- b) * 2);
}

Краткое объяснение – VW и VH единиц
Единица vw представляет 1/100 ширины области просмотра. Например, 50vw – это 50 частей ширины области просмотра, разрезанных по вертикали на 100 равных частей, в то время как 50vh – это 50 частей высоты области просмотра, разрезанных по горизонтали на 100 равных частей.

Давайте улучшим приведенный выше код, добавив фон и установив границу, высоту и ширину, используя наши предопределенные переменные CSS.

.cb {
  – ш: 35 ватт;
  – ч: 40 кВт;
  –b: 4vw;
  –b2: calc (var (- b) * 2);
  фон: URL (bg.jpg);
  граница: var (- b) сплошная прозрачная;
  высота: вар (- ч);
  ширина: var (- w);
}

Вот как демоверсия должна выглядеть прямо сейчас:
коробка с фоновым изображениемРазмер фонового изображения
Нам нужно фоновое изображение, чтобы покрыть всю область

<

div> включая область границы, поэтому фоновое изображение должно иметь соответствующий размер.

Если вы хотите придать фоновому изображению фиксированный размер, просто убедитесь, что размер, который вы даете, позволяет ему покрыть область границ

<

div> также. Что касается кода, использованного до сих пор, вот фоновое значение, которое я ему даю:

.cb {
  – ш: 35 ватт;
  – ч: 40 кВт;
  –b: 4vw;
  –b2: calc (var (- b) * 2);
  фон: url (bg.jpg) center / calc (var (- w) + var (- b2))
      calc (var (- h) + var (- b2));
  граница: var (- b) сплошная прозрачная;
  высота: вар (- ч);
  ширина: var (- w);
}

Ширина фонового изображения [calc(var(–w) + var(–b2))] это сумма ширины div [var(–w)] и ширина левой и правой границ [var(–b2)],

Аналогично высота фонового изображения [calc(var(–h) + var(–b2))] сумма высоты деления [var(–h)] и ширина верхней и нижней границ [var(–b2)],

Таким образом, мы изменили размер фонового изображения до области, которая равна размеру div (включая область границы).

Ключевое слово center выравнивает фоновое изображение по центру div.

Примечание. Если вы добавляете отступ в элемент div, не забудьте также включить область отступа в размер фона, также как и область границы.

Вот что мы имеем сейчас:
коробка с фоновым изображениемПокройте границы эксклюзивной области
Теперь, когда мы покрыли область, включающую границы, фоновым изображением, все, что осталось, – это покрыть центральную область внутри границы (область, исключающую границы) сплошным цветом, для которого мы достигаем вставки в виде рамки. ,

.cb {
  – ш: 35 ватт;
  – ч: 40 кВт;
  –b: 4vw;
  –b2: calc (var (- b) * 2);
  фон: url (bg.jpg) center / calc (var (- w) + var (- b2))
      calc (var (- h) + var (- b2));
  граница: var (- b) сплошная прозрачная;
  box-shadow: вставка var (- w) 0 0 rgba (0,120,237, .5);
  высота: вар (- ч);
  ширина: var (- w);
}

Горизонтальная тень со значением var (- w) покрывает всю ширину div. Использование функции цвета rgba позволяет добавить некоторую прозрачность в микс, однако вы также можете использовать непрозрачный цвет, если вы хотите полностью покрыть центральную область.
коробка с фоновым изображениемДобавьте дополнительную рамку с box-shadow
В демонстрации Codepen вы могли видеть белую рамку вокруг изображения. Существует известный трюк с использованием box-shadows для создания нескольких границ – мы можем использовать ту же технику, чтобы добавить одну или несколько сплошных цветных границ в наш дизайн.

Обновленное значение box-shadow:

.cb {
– ш: 35 ватт;
– ч: 40 кВт;
–b: 4vw;
–b2: calc (var (- b) * 2);
фон: url (bg.jpg) center / calc (var (- w) + var (- b2))
    calc (var (- h) + var (- b2));
граница: var (- b) сплошная прозрачная;
box-shadow: вставка var (- w) 0 0 rgba (0,120,237, .5),
    0 0 0 calc (var (- b) / 2) белый;
высота: вар (- ч);
ширина: var (- w);
}

Функция calc (var (- b) / 2) создает тень от половины ширины границы.
коробка с теньюДополнительно: отдельное расположение и эстетика
В моей последней демонстрации Codepen я поместил код для фонового изображения и цвет тени блока в отдельный класс. Это необязательно, но может быть чрезвычайно полезно, если вы хотите повторно использовать макет контура с вырезом в нескольких элементах и ​​добавлять эстетику (фоновое изображение + цвет) для каждого элемента независимо.

Я добавил класс с именем .poster1 к

<

div> для достижения этой цели.

.poster1 {
  –tbgc: rgba (0,120,237, .5);
  background-image: url (“http://bit.ly/2eQBij2”);
}

Поскольку фон является сокращенным свойством, его дополнительные свойства могут быть переопределены / установлены индивидуально. Следовательно, мы можем установить background-image в .poster1 и удалить значение url из свойства background в .cb.

Чтобы установить значение box-shadow, мы можем использовать другую переменную CSS. Переменная –tbgc содержит значение цвета, которое мы хотим дать box-shadow (lightblue в демоверсии), поэтому среди правил стиля для .cb мы заменяем значение цвета свойства box-shadow на var (- tbgc ).

.cb {
  – ш: 35 ватт;
  – ч: 40 кВт;
  –b: 4vw;
  –b2: calc (var (- b) * 2);
  background: center / calc (var (- w) + var (- b2))
      calc (var (- h) + var (- b2));
  граница: var (- b) сплошная прозрачная;
  box-shadow: вставка var (- w) 0 0 var (- tbgc),
      0 0 0 calc (var (- b) / 2) белый;
  высота: вар (- ч);
  ширина: var (- w);
}

Код для портретного режима
Поскольку все размеры указаны в единицах vw, он будет выглядеть слишком маленьким, когда вы просматриваете дизайн в портретном режиме (меньшая ширина относительно высоты) – на котором все мобильные устройства включены по умолчанию. Чтобы решить эту проблему, переключите vw с помощью vh и измените размер дизайна, как вы считаете нужным для портретных режимов.

@media (ориентация: портрет) {
  .cb {
      – Вт: 35 кВт;
      – ч: 40 вч;
      – б: 4вч;
  }
}

код для портретного режимаПримечание. Не забудьте добавить метатег viewport на свою HTML-страницу, если вы решили оптимизировать его для мобильного просмотра.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *