Jump to content
  • 0

Прозрачные иконки


brezze
 Share

Question

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

123.jpg

Edited by brezze
Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0
Только что, Hasiev сказал:

Это ведь ссылка, а внутри иконка .. Ссылке фон задавайте.

вы совершенно правы, это ссылка. Но если я задам фон ссылке, а иконку например сделаю прозрачной. То иконка просто исчезнет, и фон ссылки останется белым ))

Link to comment
Share on other sites

  • 0
1 час назад, brezze сказал:

вы совершенно правы, это ссылка. Но если я задам фон ссылке, а иконку например сделаю прозрачной. То иконка просто исчезнет, и фон ссылки останется белым ))

Да, действительно .. Никогда с этим не сталкивался, либо не помню .. 

Link to comment
Share on other sites

  • 0
3 минуты назад, AlexZaw сказал:

А в чем проблема с помощью фотошопа сделать "дырку" в иконке? Ну или найти уже готовые "дырявые" иконки?

проблема в том, что по наведению иконка меняет свой цвет :D

Link to comment
Share on other sites

  • 0

Ну сделайте два варианта иконки с нужными цветами и меняйте их по ховеру, хоть с помощью свойств display, opacity, visibility  хоть спрайтами сделайте... Других вариантов кроме как "продырявить" изображение все-равно нет.

Edited by AlexZaw
Link to comment
Share on other sites

  • 0

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

Edited by Hasiev
Запятую поставил
Link to comment
Share on other sites

  • 0

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

Link to comment
Share on other sites

  • 0
15 минут назад, AlexZaw сказал:

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

В том, что Вы так и не поняли автора, с его проблемой .. )

Link to comment
Share on other sites

  • 0

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

Рабочий вариант с свг есть в теме выше, где там костыли?

Есть вариант использования двух иконок с разными цветами фона и прозрачным рисунком. Создаются за 5 минут в фотошопе.

В этом методе костылей опять же не вижу. 

Сделать картинку ссылкой и при ховере менять картинки тоже далеко не костыль.

Объясните в чем же я заблуждаюсь? :)

Link to comment
Share on other sites

  • 0
49 минут назад, AlexZaw сказал:

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

Рабочий вариант с свг есть в теме выше, где там костыли?

Есть вариант использования двух иконок с разными цветами фона и прозрачным рисунком. Создаются за 5 минут в фотошопе.

В этом методе костылей опять же не вижу. 

Сделать картинку ссылкой и при ховере менять картинки тоже далеко не костыль.

Объясните в чем же я заблуждаюсь? :)

Вот автор зайдет, и вновь Вам все пояснит.

 

50 минут назад, AlexZaw сказал:

есть круглая белая иконка

Уже не правильно.

Link to comment
Share on other sites

  • 0
7 часов назад, Hasiev сказал:
8 часов назад, AlexZaw сказал:

есть круглая белая иконка

Уже не правильно.

Эмм...

13 часа назад, brezze сказал:

Ребят, есть идеи как сделать иконки с вот такой прозрачностью

А это как понимать?

Или  вы имеете ввиду то, что иконка является одновременно ссылкой? Так одно другому не мешает, и не меняет принципов решения задачи

 

Link to comment
Share on other sites

  • 0
11 час назад, mrnobody сказал:

Так?

Брал иконки отсюда: https://www.iconfinder.com/iconsets/picons-social

Потом я их оптимизировал с помощью этого сервиса: https://jakearchibald.github.io/svgomg/

Спасибо вам большое. Этот вариант подойдет. Иконки будут отличатся от макета, но так как заказчик вообще svg не предоставил, то решение лучшее ) 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By zeiger2
      Здравствуйте! У меня стоит задача, что при наведении на блок li строка должна поменять цвет, в том числе и картинка. Я меняю картинку с помощью 
      background-image: none;     background: url(../img/check_icon_red.png) left no-repeat;   Но теперь картинка позицианируется не там где должна, её можно поставить на место только вручную, через -100px. Нужно поставить ровно туда, где она была. Должна быть в одном ряду с другими
    • By Mix9
      есть див с 5 img, при уменьшении экрана див выходит за него. Я добавил overflow: auto для этого div в надежде на то, что я смогу прокручивать фотки с помощью скроллбара, однако даже с ним почему-то я не вижу часть фоток которые вышли за границу. Что с этим можно сделать? класс video повторяется 5 раз, я тут оставил только 1 
      .content{ width: 90%; background-color: #333; } .video{ margin: 0px 4px 0px 4px; width: 310; display: flex; flex-direction:column; } .video_button_text{ margin-top: 10px; display: flex; flex-direction: row; font-size: 20px; color: white; } .video_text_div{ display: inline-block; width: 250px; } .video_text{ text-align: justify-all; margin: 0px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .slidan_videos{ margin: 0px 10px 0px 20px; overflow: auto; width: auto; margin-bottom: 50px; display: flex; flex-direction: row; justify-content: space-around; } <div class="content"> <div class = slidan_videos> <div class = video> <div> <a href = 'ссылка'><img class="img" src=""картинка"></a> </div> <div class = video_button_text> <div class = avatarka_div> <a href="ссылка" target="_blank"><img class = avatarka src="картинка"></a> </div> <div class = video_text_div> <p class = video_text><a href="ссылка">текст</a></p> </div> </div> </div>
    • By Kaido
      Использую готовый плагин для модальных окон(от MaxGraph). Проблема в том, что когда у меня открыто два модальных окна, для примера Форма + Политика конфендициальности, и мне нужно закрыть политику вместе с ней закрывается и другое модальное окно. В JS я не сильно разбираюсь(собственно из за этого и использую готовый плагин), можете помочь кто работал с этим плагином? Я примерно понимаю как он работает, но реализовать чтобы закрывалось только одно не получается.
       
        <div class="content"> <button class="modal-btn" data-path="first" data-animation="fadeInUp" data-speed="1500">Открыть окно 1</button> </div> <div class="modal"> <div class="modal__wrapp" data-target="first"> <div class="modal__content"> <button class="modal__close">Закрыть</button> модальное окно <button data-path="policy">Политика</button> </div> </div> <div class="modal__wrapp" data-target="policy"> <div class="modal__content"> <button class="modal__close">Закрыть</button> политика </div> </div> </div> .modal { --transition-time: 0.3s; position: fixed; left: 0; top: 0; right: 0; bottom: 0; z-index: 1000; cursor: pointer; overflow-y: auto; overflow-x: hidden; text-align: center; opacity: 0; visibility: hidden; transition: opacity var(--transition-time), visibility var(--transition-time); } .modal__wrapp { display: none; cursor: default; width: fit-content; height: fit-content; } .modal__content{ position: absolute; left: 500px; width: 500px; height: 500px; display: flex; color: white; flex-direction: column; text-align: left; background-color: #000; } .modal__content button{ width: 200px; height: 50px; margin: 50px 0; } .modal.is-open { opacity: 1; visibility: visible; transition: opacity var(--transition-time), visibility var(--transition-time); } .modal__wrapp.modal-open { display: flex; } .disable-scroll { position: relative; overflow: hidden; height: 100vh; position: fixed; left: 0; top: 0; width: 100%; } .fade { opacity: 0; transition: opacity var(--transition-time); } .fade.animate-open { opacity: 1; transition: opacity var(--transition-time); } .fadeInUp { opacity: 0; transform: translateY(vw(-100)); transition: opacity var(--transition-time), transform var(--transition-time); } .fadeInUp.animate-open { opacity: 1; transform: translateY(0); transition: opacity var(--transition-time), transform var(--transition-time); } .modal__wrapp[data-target="policy"] .modal__content{ left: 1050px; background-color: #000; opacity: .5; } class Modal { constructor(options) { let defaultOptions = { isOpen: () => {}, isClose: () => {}, } this.options = Object.assign(defaultOptions, options); this.modal = document.querySelector('.modal'); this.speed = false; this.animation = false; this.isOpen = false; this.modalContainer = false; this.previousActiveElement = false; this.fixBlocks = document.querySelectorAll('.fix-block'); this.focusElements = [ 'a[href]', 'input', 'button', 'select', 'textarea', '[tabindex]' ]; this.events(); } events() { if (this.modal) { document.addEventListener('click', function(e){ const clickedElement = e.target.closest('[data-path]'); if (clickedElement) { let target = clickedElement.dataset.path; let animation = clickedElement.dataset.animation; if (clickedElement.classList.contains('modal-close')) { this.close(); } let speed = clickedElement.dataset.speed; this.animation = animation ? animation : 'fade'; this.speed = speed ? parseInt(speed) : 300; this.modalContainer = document.querySelector(`[data-target="${target}"]`); this.open(); return; } if (e.target.closest('.modal__close')) { this.close(); return; } }.bind(this)); window.addEventListener('keydown', function(e) { if (e.keyCode == 27) { if (this.isOpen) { this.close(); } } if (e.keyCode == 9 && this.isOpen) { this.focusCatch(e); return; } }.bind(this)); this.modal.addEventListener('click', function(e) { if (!e.target.classList.contains('modal__wrapp') && !e.target.closest('.modal__wrapp') && this.isOpen) { this.close(); } }.bind(this)); } } open() { this.previousActiveElement = document.activeElement; this.modal.style.setProperty('--transition-time', `${this.speed / 1000}s`); this.modal.classList.add('is-open'); this.disableScroll(); this.modalContainer.classList.add('modal-open'); this.modalContainer.classList.add(this.animation); setTimeout(() => { this.options.isOpen(this); this.modalContainer.classList.add('animate-open'); this.isOpen = true; this.focusTrap(); }, this.speed); } close() { if (this.modalContainer) { this.modalContainer.classList.remove('animate-open'); this.modalContainer.classList.remove(this.animation); this.modal.classList.remove('is-open'); this.modalContainer.classList.remove('modal-open'); this.enableScroll(); this.options.isClose(this); this.isOpen = false; this.focusTrap(); } } focusCatch(e) { const focusable = this.modalContainer.querySelectorAll(this.focusElements); const focusArray = Array.prototype.slice.call(focusable); const focusedIndex = focusArray.indexOf(document.activeElement); if (e.shiftKey && focusedIndex === 0) { focusArray[focusArray.length - 1].focus(); e.preventDefault(); } if (!e.shiftKey && focusedIndex === focusArray.length - 1) { focusArray[0].focus(); e.preventDefault(); } } focusTrap() { const focusable = this.modalContainer.querySelectorAll(this.focusElements); if (this.isOpen) { focusable[0].focus(); } else { this.previousActiveElement.focus(); } } disableScroll() { let pagePosition = window.scrollY; this.lockPadding(); document.body.classList.add('disable-scroll'); document.body.dataset.position = pagePosition; document.body.style.top = -pagePosition + 'px'; } enableScroll() { let pagePosition = parseInt(document.body.dataset.position, 10); this.unlockPadding(); document.body.style.top = 'auto'; document.body.classList.remove('disable-scroll'); window.scroll({ top: pagePosition, left: 0 }); document.body.removeAttribute('data-position'); } lockPadding() { let paddingOffset = window.innerWidth - document.body.offsetWidth + 'px'; this.fixBlocks.forEach((el) => { el.style.paddingRight = paddingOffset; }); document.body.style.paddingRight = paddingOffset; } unlockPadding() { this.fixBlocks.forEach((el) => { el.style.paddingRight = '0px'; }); document.body.style.paddingRight = '0px'; } } const modal = new Modal({ isOpen: (modal) => { console.log(modal); console.log('opened'); }, isClose: () => { console.log('closed'); }, });  
    • By stasN1
      Мне нужен такой результат :

      Не понимаю почему background не применяется вокруг иконок:

       
      Сам код:
      Html:
      css:

      Html:
      <section class="finish"> <div class="container"> <h2 class="finish_header">По окончании обучения Вы сможете!</h2> <div class="finish_divider"></div> <div class="finish_wrapper"> <finish_item> <div class="finish_round"> <img src="/icons/finish/1 (1).png" alt="" class="finish_icon"> </div> <div class="finish_descr">Создать свой сайт или блог</div> </finish_item> <finish_item> <div class="finish_round"> <img src="/icons/finish/2.png" alt="" class="finish_icon"> </div> <div class="finish_descr">Создать свой сайт или блог</div> </finish_item> <finish_item> <div class="finish_round"> <img src="/icons/finish/3.png" alt="" class="finish_icon"> </div> <div class="finish_descr">Обеспечить ему медленный, но верный рост в ТОП</div> </finish_item> <finish_item> <div class="finish_round"> <img src="/icons/finish/4.png" alt="" class="finish_icon"> </div> <div class="finish_descr">Достигнуть стабильного прироста посетителей</div> </finish_item> <finish_item> <div class="finish_round"> <img src="/icons/finish/5.png" alt="" class="finish_icon"> </div> <div class="finish_descr">Достигнуть стабильного прироста посетителей</div> </finish_item> </div> </div> </section>  
      Css:
      .finish .finish_wrapper { margin-top: 41px; display: flex; justify-content: space-between; } .finish .finish_wrapper .finish_item { width: 204px; } .finish .finish_wrapper .finish_item .finish_round { width: 115px; height: 115px; background-color: #b4e2ff; border-radius: 8px; } .finish_descr { font-family: Roboto; font-size: 17px; line-height: 20px; font-weight: 300; color: #efefef; Спасибо!
       

      Уже решил, спасибо!
      У меня CSS селектор вида:
      .finish .finish_wrapper .finish_item .finish_round

      А должен быть:
      .finish .finish_wrapper finish_item .finish_round
      Т.е. без точки перед finish_item, так как это не класс, а элемент
    • By Dos1er
      Приветствую! 
      Подскажите, плиз, как сделать чекбокс как на скрине? 
      Я новичок в верстке и что-то не могу разобраться в кастомизации данной штуки

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy