«Прозрачная» рамка вокруг предметов на фоне

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

«Прозрачная» рамка вокруг предметов на фоне

Это может быть очень глупо, но: возможно ли каким-то образом иметь элементы (эти белые квадраты) на фоне (черная текстура), причем каждый из этих элементов имеет границу, которая «удаляет» фон для границы 10 пикселей (или любой другой)? Итак, у вас есть непрерывный фон, и каждый элемент на нем «вырезает» какую-то его часть. Истинная «прозрачная» граница (как и другие вопросы), очевидно, просто позволит вам увидеть фон, так что я не это имею в виду.

Если нет, то как можно добиться такого адаптивного дизайна?

Извините, я не знаю другого способа объяснить это. Спасибо.

См. Пример / скрипку здесь: jsfiddle.net/14nn2pLy

   html, body {
    margin: 0;
    padding: 0;
    height: 100%;
    background: #fd1dfa;
}

#main_header {
    position: fixed;
    top: 0px;
    width: 100%;
    height: 200px;
    background: url() no-repeat center top;
    background-size: contain;
}

#main_footer {
    position: fixed;
    bottom: 0px;
    width: 100%;
    height: 200px;
    background: url(https://preview.ibb.co/hACMzS/background_footer.png) no-repeat center bottom;
    background-size: contain;
}

#icons {
    position: fixed;
    bottom: 0px;
    width: 900px;
    height: 75px;
    background: url(https://preview.ibb.co/mkPODn/footer_items.png) no-repeat center bottom;
    border: 10px;
    border-color: rgba( 0, 0, 0, 0);
}
<div id = "main_header"></div>

<div id = "main_footer">
    <div id = "icons"></div>
</div>

есть ли какой-либо код, который может показать вашу проблему и, в конечном итоге, ваши неудачные попытки? возможно, есть метод css, а может и нет, коды, изображения и браузеры нацелены на это;) Можете ли вы прояснить вопрос

G-Cyrillus 01.05.2018 20:56

Предполагая, что каждый из этих квадратов является div, вы можете дать им ширину границы 4px и установить цвет границы на rgba (0,0,0,0). Последний 0 устанавливает непрозрачность на 0.

Michael Sorensen 01.05.2018 20:57

@MichaelSorensen, я понимаю, что черные части должны смешиваться / плавно переходить в фуксию .... режим наложения может работать, а не непрозрачность;) Код OP отсутствует, чтобы в конечном итоге иметь реальную подсказку

G-Cyrillus 01.05.2018 20:58

@MrLister да звучит хорошо для двух границ, если белые полосы сохранены;)

G-Cyrillus 01.05.2018 21:08

См. Пример / скрипт здесь: jsfiddle.net/14nn2pLy Ya, цвет границы на прозрачный, делает границу прозрачной. Тогда у вас нет границы, потому что вы видите фон. Цель состоит в том, чтобы «убрать» фон для места вокруг предметов ...

sigug 01.05.2018 21:09

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

Cristian Traìna 01.05.2018 21:34

О, хорошо, может быть, так. Спасибо. Посмотрим на это.

sigug 01.05.2018 21:54
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
4
7
1 258
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Мой мыслительный процесс

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

Пример:

.bg {
  position: relative;
  height: 250px;
  width: 500px;
  background-image: url(https://i.imgur.com/nRXO8xa.jpg);
}

.border {
  height: 20px;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 30px;
  margin: auto;
  padding: 10px;
  background: steelblue;
  border: 10px solid black;
}

.no-border {
  height: 20px;
  position: absolute;
  top: 0;
  bottom: 0;
  right: 30px;
  margin: auto;
  padding: 10px;
  background: steelblue;
  border: 10px solid #F7F2D5;
}
<div class = "bg">
  <div class = "border">black border</div>
  <div class = "no-border">"transparent" border</div>
</div>

Решение:

Желаемый эффект возможен при использовании clip-path на заднем плане. Обратите внимание, что я также изменил HTML и CSS, иначе это не сработает. clip-path используется для вырезать той части фонового изображения, которая вам не нужна, поэтому она становится прозрачный и активируется при наведении курсора.

body,
html {
  height: 100%;
  margin: 0;
}

body {
  background: url(https://images.unsplash.com/photo-1473662712020-75289ee3c5de);
  background-size: cover;
}

.container {
  height: 140px;
  width: 618px;
  position: relative;
  top: 40%;
  margin: 0 auto;
}

.bg {
  height: 140px;
  width: 618px;
  position: relative;
}

.icon {
  height: 50px;
  width: 50px;
  position: absolute;
  top: 25.25%;
  left: 38.25%;
  z-index: 1;
}

.icon:hover+.bg {
  clip-path: polygon(0 0, 0 100%, 44% 78.5%, 37.5% 50%, 44% 22%, 50.5% 50%, 44% 78.5%, 0 100%, 100% 100%, 100% 0);
}
<div class = "container">

  <div class = "icon">
    <img src = "https://i.imgur.com/V2eI4Rm.png" alt = "icon">
  </div>

  <div class = "bg">
    <img src = "https://i.imgur.com/D3V3ZYq.png" alt = "background">
  </div>

</div>

Спасибо, но твердого фона нет / не должно быть. Так что, как я предполагал, вероятно, нет. Но как же тогда это делается в разных дизайнах и еще много чего? Я часто видел, что у элемента есть «граница», чтобы выделяться на фоне. Хм.

sigug 01.05.2018 21:30

Вы можете редактировать изображения в фотошопе так, как вы хотите, но я не могу придумать, как сделать это с помощью CSS. У вас есть лучший пример, на который я могу взглянуть?

Jos van Weesel 01.05.2018 21:38

Да, я могу сделать иконки частично прозрачными. Не решает то, чего я хочу достичь, потому что, как только появляется что-то прозрачное, фон явно просвечивает. Хм, это скорее общий вопрос, а не конкретный пример. Но да, пусть значок будет поверх фона, но чтобы значок «выделялся», нужно «удалить» фон вокруг этого элемента. Не знаю, как еще я могу объяснить, но вы понимаете, о чем я, а? Если бы не CSS, что было бы тогда? Спасибо.

sigug 01.05.2018 21:51

"удалить фон вокруг этого объекта", как бы это выглядело? Потому что все, о чем я могу думать, - это сплошная цветная рамка вокруг этого значка, которая делает вид, будто фон исчез. Если вы говорите о содержимом вокруг значка, вы всегда можете увеличить поле. Не могли бы вы дать мне фон (изображение) и значок, на котором вы бы хотели, чтобы он работал, чтобы я мог поиграть с ним?

Jos van Weesel 04.05.2018 20:43

Я предполагаю, что это невозможно, просто было интересно, как такой дизайн выполняется в других случаях. Вот изображения: Первые два оригинальных прозрачных png. последние два JPG в качестве примеров, как это должно быть. image.ibb.co/iFYoM7/bg.pngimage.ibb.co/mxpjuS/icon.pngimage.ibb.co/emFPuS/icon_on_bg_border.jpgimage.ibb.co/bLQPuS/icon_on_bg_noborder.jpg

sigug 05.05.2018 23:28

Спасибо, это очень поможет. Я сделаю это с утра!

Jos van Weesel 06.05.2018 00:45

Просто убедись, что я правильно тебя понимаю, это то, что ты хочешь, верно? Но затем, чтобы иметь возможность использовать не сплошной фон, например изображение, чтобы был виден тот же эффект? JSFiddle

Jos van Weesel 06.05.2018 12:22

Точно, на заднем плане есть что угодно, поэтому он должен просвечивать сквозь прозрачные места на фоне элемента и границу вокруг значка ... Большое спасибо.

sigug 06.05.2018 16:36

Это то, что вы хотели? Если да, я дам ответ, чтобы вы могли принять его как официальный ответ. В противном случае я буду рад помочь вам в дальнейшем. Мне нравится вызов :)

Jos van Weesel 06.05.2018 21:08

Что ж, пример был таким, каким я хотел на первый взгляд, но, как вы сказали, должна быть возможность «использовать не сплошной фон, например изображение, чтобы был виден тот же эффект». Но я не думаю, что это возможно, так что ...

sigug 07.05.2018 10:57

Не так быстро! Мне удалось создать эффект с помощью clip-path. Добиться желаемого эффекта невероятно утомительно, особенно если вам нужно более одного такого значка, но не это возможно. Я обновил свой ответ, отметьте его как принятый, я приложил много усилий :)

Jos van Weesel 07.05.2018 14:24

Пожалуйста. До сих пор это была моя самая интересная задача, спасибо!

Jos van Weesel 08.05.2018 17:04

вы можете создать изображение с прозрачным фоном и использовать его как изображение границы.

.background {
position: relative;
  width: 100%;
  height: 100%;
  padding: 10px;
  background-color: #fd1dfa;
  z-index: 1 !important;
}

.background:after {
  content: "";
  display: table;
  clear: both;
}

hr {
  border: 10px solid white;
  position: relative;
  top: 100px;
  z-index: 5 !important;
}

.center {
  position: relative;
  width: 50px;
  height: 50px;
  background-color: #fd1dfa;
  color: #ffffff;
  padding: 10px;
  z-index: 10 !important;
}

.border {
  position: relative;
  z-index: 8 !important;
  margin: 30px;
  width: 70px;
  height: 70px;
  float: left;
  background: white;
  border: 10px solid transparent;
  border-image: 
  
}
<div class = "background">
 <hr>
  <div class = "border">
    <div class = "center">
      text and words
    </div>
  </div>

  <div class = "border">
    <div class = "center">
      text and words
    </div>
  </div>

  <div class = "border">
    <div class = "center">
      text and words
    </div>
  </div>
   
  
</div>

Спасибо, но нет, так как на границе есть "цвет фона", который не делает ее "прозрачной".

sigug 02.05.2018 14:18

@ Гримвуд, хорошо. может что-то с холстом или svg. последнее изменение настолько близко, насколько я могу

crffty 02.05.2018 23:32

Другие вопросы по теме