Jump to content
  • 0

Как создать серую с красной полоску с помощью CSS


lev99
 Share

Question

Как создать серую с красной полоску с помощью CSS без использования двух картинок?

Пробовал получилось с помощью картинок, все результаты с CSS не верно показывает полосу и она не по центру и присутствует наслоение.

641ef4e802aa5535e6539fb5afa911c6.jpg

Edited by lev99
Link to comment
Share on other sites

22 answers to this question

Recommended Posts

  • 0

Если имеется ввиду полоса с ползунком, то это все реализуется с помощью скрипта.

Если вопрос состоит в том как сделать такое оформление, то можно взять широкую картинку в 2 раза шире желаемой полосы и на ней половину полосы сделать одного цвета, а вторую второго и потом уже скриптом позиционировать ее через css свойство background в зависимости от желаемого положения. Но это самый быстрый способ без заморочек со стороны css.

Можно еще сделать 2 div-а с нужными цветами фона и их ширину регулировать скриптом.

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

  • Like 1
Link to comment
Share on other sites

  • 0

Прикольный, а более простой, не использующий webkit-border-radiu, кстати зачем и ещё вопрос вот я его вставлю, а как закрепить позицию, чтобы не находило на текст и был по центру?

Если имеется ввиду полоса с ползунком, то это все реализуется с помощью скрипта.

Если вопрос состоит в том как сделать такое оформление, то можно взять широкую картинку в 2 раза шире желаемой полосы и на ней половину полосы сделать одного цвета, а вторую второго и потом уже скриптом позиционировать ее через css свойство background в зависимости от желаемого положения. Но это самый быстрый способ без заморочек со стороны css.

Можно еще сделать 2 div-а с нужными цветами фона и их ширину регулировать скриптом.

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

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

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

я правда делал по другому, я уменьшал серую полосу по мере увеличения красной полосы.

Edited by lev99
Link to comment
Share on other sites

  • 0

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

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

Но идея показа при наведении на него, тоже неплохо, мне эта идея понравилась тоже :P

Link to comment
Share on other sites

  • 0

Кстати, что означает: hover -зависать?

Я вообще уже не понимаю, что, как, когда и каким образом должно меняться. У вас какой-то талант к запутанному повествованию.

Это мод, мод отображает полосу серую и красную, то есть графически отображает количество денег, выше него отображается общая сумма которую надо набрать, в процентах набранная сумма и сумма собранная.

Пользователь модуля может менять сумму которую должен набрать и сумму которую собрал.

Расположение информации может находиться на этой полоске, просто на тот момент я её расположил выше неё:

$10000 30% $3000

Link to comment
Share on other sites

  • 0

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

Но идея показа при наведении на него, тоже неплохо, мне эта идея понравилась тоже :P

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

Кстати, что означает: hover -зависать?

Истина где-то рядом.

Link to comment
Share on other sites

  • 0

Ещё ошибся о показе процента он показывает от 100% до 0%

thermometer2.jpg

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

Пока хотел решить каким способом переделать, а то что я его воткну в последствии в php - это уже моя проблема, так что не будем забегать вперёд ))

Пока интересует только, как создать форму. :P

Картинку можно сделать и одним дивом фон красим в серый и дальше закрашиваем его красным, как-то так :P

В принципе как у hypnocolor в примере хотя там их два :yahoo:

Link to comment
Share on other sites

  • 0

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

Это зависит от того какую ширину указывать для каждого элемента.

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

Link to comment
Share on other sites

  • 0

нет эти параметры не в базе а в модуле и выставляются один раз для этого ниже пишется когда обновлено

Обновлено: 18/09/2011

Ну так вообще все просто. Тогда при каждом обновлении менять вручную ширину дивов и все. Можно сделать общую ширину полосы 100 рикселей и тогда просто определить какой ширины какая полоса должна быть.

  • Like 1
Link to comment
Share on other sites

  • 0

Я про внешний вид всё

Как привязать к нашей серо-красной полосе надписи "$10000 30% $3000" и "Обновлено: 18/09/2011".

В принципе "Обновлено: 18/09/2011", вроде нормально, а вот "$10000 30% $3000", как-то удалён, как его разместить ближе?

Кстати, возможно в нашей конструкции, расположить "$10000 30% $3000" поверх, полосы и чтобы всё таки "$10000" было в крайнем левом, а "$3000" правом, а "30%" в центре.

http://jsfiddle.net/LpvMv/3/

Что-то типа этого:

3440aea6839a8c1d41ec6a116dff8d9f.jpg

Edited by lev99
Link to comment
Share on other sites

  • 0

Hi hypnocolor,

ну честно, внешне подходит, но дёргающиеся циферки и красная полоска меняющаяся, перебор, конечно интерактивно - да, информационность и понятность - нет.

30% это как должно отображаться когда постоянно отображается 70%?

И для чего плодить дополнительные jQuery, чтобы создать ещё большую конфликтность скрипта?

Кстати зачем делать чтобы полоска реагировала на курсор, если полоска и так показывает 70% и $7000, вот если показывала 0% и $0, а при наведении 70% и $7000, то тогда понятен смысл её работы.

Edited by lev99
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