Jump to content
  • 0

Замена картинок углов рамки на спрайт


lev99
 Share

Question

Замена картинок углов рамки на спрайт

Возникла проблема, по их отображению, во первых у меня код:


#wm .amoney_tr {
background: url('../images/jc_rb_tr.gif') no-repeat scroll 100% 0% transparent;
height: 10px;
overflow: hidden;
padding-right: 13px;
}

Четыре угла


.sprite {
background: url('../images/donate_am.png') no-repeat -297px -202px;
width: 13px;
height: 13px;
}

Можно конечно сделать и в процентах, только всё равно отображает картинку Неправильно


.sprite {
background: url('imgs/donate_am.png') no-repeat 56.713% 43.287%;
width: 13px;
height: 13px;
}

В принципе пытался так вставить


#wm .amoney_tr {
background: url('imgs/donate_am.png') no-repeat 59.519% 40.481%;
height: 10px;
overflow: hidden;
padding-right: 13px;
}

Как правильней?

77355d8e19f0692cdc7ead02b7066691.jpg

Edited by lev99
Link to comment
Share on other sites

22 answers to this question

Recommended Posts

  • 0

Если речь про те блоки, что в левой колонке, то в наши дни правильно использовать border-radius и не дурить головы :) Для 2% пользователей ископаемых IE важнее быстрота загрузки страницы, чем круглота углов, а у ~10% пользователей мобильных устройств с retina-подобными экранами картинка будет еще и красивее.

Edited by SelenIT
  • Like 1
Link to comment
Share on other sites

  • 0

SelenlT

Речь про те блоки в левой колонке, у которой слева и справа, верху и внизу, размещаются картинки.

Насчёт быстроты, мы работаем над этим.

CSS спрайты: основные техники и полезные инструменты

Использование CSS-спрайтов на сайте позволяет повысить производительность и грамотно организовать элементы интерфейса.

http://habrahabr.ru/post/159027/

Специально для вас проверил в iPhone5 - Safari, замечательно отображаются закругления :P

Edited by lev99
Link to comment
Share on other sites

  • 0

правильно сделать:

1) Через .border-radius()

2) Через .block:before, .block:after {} с спрайтом + absoute. правда надо иметь 2 дива (что-то типа .wrapper > .wrapper_inner). Если бы надо было таким образом научить недобраузер я бы использовал этот способ.

А так же то что было сказанно тут:

важнее быстрота загрузки страницы, чем круглота углов

правильнее чем:

Использование CSS-спрайтов на сайте позволяет повысить производительность и грамотно организовать элементы интерфейса.

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

а цитирование в данном случае говорит о том что (без обид) ты не понимаешь о чем говоришь в рамках данной предметной области.

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

  • Like 1
Link to comment
Share on other sites

  • 0

Я имел в виду, что спрайты необходимы там, где они действительно необходимы. Спрайт лучше, чем куча картинок (один HTTP-запрос вместо кучи таковых), но если можно обойтись и без него — еще лучше (ноль запросов лучше, чем один, время ожидания загрузки еще меньше). А рисовать закругленные углы все современные браузеры, даже мобильные, умеют сами, без картинок (не умеют лишь IE8-, но для них — graceful degradation, пользоваться сайтом квадратность уголков не мешает).

Наглядное сравнение результата скругления углов олдскульными картинками (на табах и поле ввода) и border-radius'ом (на кнопках) на retina-экранах можно увидеть здесь (©).

Link to comment
Share on other sites

  • 0

а цитирование в данном случае говорит о том что (без обид) ты не понимаешь о чем говоришь в рамках данной предметной области.

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

Что говорил автор и подразумевал - знает тол сам автор, если конечно вы не являетесь тем автором :P

Могу дать и другую цитату из википедии:

CSS-спрайты

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

Жирным выделил , кстати может вернёмся к CSS? :devil:

Link to comment
Share on other sites

  • 0

Это нужно. Логотипы, иконки (чаще всего), фигурные маркеры списков и подобный «штучный товар» — без графики никак, и спрайты для этого в самый раз. Но банальные круголки, тени и (в большинстве случаев) градиенты уже давно можно делать вовсе без картинок.

Link to comment
Share on other sites

  • 0

Это нужно. Логотипы, иконки (чаще всего), фигурные маркеры списков и подобный «штучный товар» — без графики никак, и спрайты для этого в самый раз. Но банальные круголки, тени и (в большинстве случаев) градиенты уже давно можно делать вовсе без картинок.

Вот опять полемика, без обид, но когда я делал я наверняка, чем-то руководствовался, в принципе выбор на картинки пал, так как не хотел связываться с CSS, по многим причинам, по которым валидат возмущается, а скрипт писался, так чтобы валидация на CCS3 проходила, в исходнике была рамка, кстати, если интересно, дам ссылку на оригинал ниже, чтобы за ценили мою модификацию. Так что если можете помогите разобраться.

http://adeptsite.info/

Link to comment
Share on other sites

  • 0

В http://adeptsite.info/ применяется «nifty corners» — ископаемое решение (2005-го года), когда border-radius был только в проекте и поддерживался лишь в Fx и Safari через префиксы. С тех пор ситуация с поддержкой border-radius радикально улучшилась, никакие префиксы не нужны, поэтому и у валидатора никаких вопросов возникнуть не должно. Хотя «валидация CSS» — сама по себе весьма условная штука.

Link to comment
Share on other sites

  • 0

а зачем вообще нужна CSS3 валидация?

Так стоит ли проводить валидацию документов и заниматься этим этапом при написании веб-страниц? Безусловно, да. Кому-то она поможет выявить существующие недочеты, другому поможет писать корректный код. Исправлять же ошибки, добиваясь полного соответствия стандартам, или оставить их ради совместимости с разными браузерами — здесь уже каждый решает сам, какие цели он преследует и что для него важнее.

http://htmlbook.ru/samhtml/validatsiya-dokumentov

В http://adeptsite.info/ применяется «nifty corners» — ископаемое решение (2005-го года), когда border-radius был только в проекте и поддерживался лишь в Fx и Safari через префиксы. С тех пор ситуация с поддержкой border-radius радикально улучшилась, никакие префиксы не нужны, поэтому и у валидатора никаких вопросов возникнуть не должно. Хотя «валидация CSS» — сама по себе весьма условная штука.

Что предлагаете? Оставить идею, задействовать css для закругления рамки, в итоге с пропиской для всех браузеров в проверке css, добавиться ещё пару ошибок, так как с новыми браузерами проблем нет, а для старых валидация будет ругаться, учтите мой вариант актуален, так как он есть и в компоненте.

Link to comment
Share on other sites

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

А вы сами взяли на себя ответственность, вот и они тоже :P

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

Link to comment
Share on other sites

  • 0

Хочу убедить, что в 2013-м году панельки с закругленными углами делаются элементарно без картинок :)

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

«Валидность» записи CSS не зависит от браузера. Она зависит исключительно от настроек валидатора. Старые браузеры просто не понимают новую валидную запись, но вреда от этого нет — это и есть изящная деградация.

  • Like 1
Link to comment
Share on other sites

  • 0

Что значит зачем? Я просто показал, как воспроизвести имеющийся дизайн (с вашего же примера) современными стандартными средствами, без нужды в картинках размерами в полторы тыщи пикселей (которые изрядно расходуют оперативку при отрисовке). Соответственно, для выпадушки со способами оплаты хватит 1 дива. Скрипту будет только проще).

  • Like 1
Link to comment
Share on other sites

  • 0

Что значит зачем? Я просто показал, как воспроизвести имеющийся дизайн (с вашего же примера) современными стандартными средствами, без нужды в картинках размерами в полторы тыщи пикселей (которые изрядно расходуют оперативку при отрисовке). Соответственно, для выпадушки со способами оплаты хватит 1 дива. Скрипту будет только проще).

Ваша взяла, я уже на всё согласен, ну практически :P

Link to comment
Share on other sites

  • 0

пришлось изменить а то сместилось в право


.amoney {
overflow: hidden;
background: #FFFFF0;
border: 1px solid #E1E1E1;
border-radius: 12px;
padding: 10px;
min-height: 160px;
}

на


.amoney {
overflow: hidden;
background: #FFFFF0;
border: 1px solid #E1E1E1;
border-radius: 12px;
padding: 0;
min-height: 160px;
}

Link to comment
Share on other sites

  • 0

В каком браузере? В Fx вроде всё нормально...

гугл хром и фарфох, я поправил дёрганье уменьшилось нельзя писать в месте


.amoney {
margin-top: 5px;
padding: 0;
background: #FFFFF0;
border: 1px solid #E1E1E1;
border-radius: 12px;
overflow:hidden;
}
.amoney {
overflow:hidden;
text-align:center;
display:none;
}
#wm .amoney {
margin: 0;
overflow: hidden;
width: auto;
}
#wm .amoney div {
margin: 0;
text-align: center;
}

Хотел сократить в итоге дёргается, пришлось оставить всё как есть

Небольшое смещение есть у рамки

641ef4e802aa5535e6539fb5afa911c6.jpg

Кстати а как повторить серую с красной полоску и чтобы можно было менять?

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