Змінити колір маркерів у HTML-списку без використання діапазону (6)
Для мене найкращим варіантомє використання псевдоелементів CSS, тому для disc кулі disc це буде виглядати так:
ul ( list-style-type: none; ) li ( position: relative; ) li:before ( content: ""; display: block; position: absolute; width: 5px; /* adjust to suit your needs */ height: 5px; /* adjust to suit your needs */ border-radius: -15px; / )
- first
- second
- third
- width і height повинні мати рівні значення, щоб утримувати вказівники округлими
- ви можете встановити border-radius рівним нулю, якщо ви хочете мати square кулі
Для більш стилів кулі можна використовувати інші css-форми https://css-tricks.com/examples/ShapesOfCSS/ (виберіть це, для якого не потрібні псевдоелементи, наприклад, трикутники)
Мені було цікаво, чи є спосіб змінити колір на кулі у списку.
У мене є список:
- House
- Garden
Неможливо вставити щось у li, наприклад, span і p. Чи можу я змінити колір куль, але не текст у якийсь розумний спосіб?
Якщо ви можете використати зображення, ви можете це зробити. І без зображення ви не зможете змінити колір лише кулі, а не текст.
Використання зображення
Li (list-style-image: url(images/yourimage.jpg); )
Без використання зображення
Потім вам потрібно відредагувати розмітку HTML і включити проліт у списку і пофарбувати і діапазон з різними кольорами.
Мені теж дуже сподобалася відповідь Марка - мені потрібен набір різних кольорових UL, і, очевидно, було б простіше використовувати клас. Ось що я використав для апельсина, наприклад:
Ul.orange ( list-style: none; padding: 0px; ) ul.orange > li:before ( content: "\25CF "; font-size: 15px; color: #F00; margin-right: 10px; padding: 0px ; line-height: 15px;
Крім того, я виявив, що шістнадцятковий код, який я використав для «content:», був іншим, ніж у Marc's (це шестигранне коло здавалося надто високим). Той, який я використав, здається, сидить зовсім посередині. Я також знайшов кілька інших постатей (квадрати, трикутники, кола тощо. буд.)
Ми можемо комбінувати list-style-image із svg s, який ми можемо вбудувати в css! Цей метод пропонує неймовірний контроль над «кулями», які можуть стати чим завгодно.
Щоб отримати червоне коло, просто використовуйте наступний css:
"); }
Але це лише початок. Це дозволяє нам робити будь-яку божевільну річ, яку ми хочемо з цими кулями. кола або прямокутники легко, але все, що ви можете намалювати за допомогою svg, можете зайти туди! Перегляньте приклад яблучного яблука нижче:
ul ( list-style-image: url("data:image/svg+xml, "); ) ul ul ( list-style-image: url("data:image/svg+xml, "); ) ul ul ul ( list-style-image: url("data:image/svg+xml, "); ) ul ul ul ul ( list-style-image: url("data:image/svg+xml, "); ) ul.bulls-eye ( list-style-image: url("data:image/svg+xml, "); ) ul.multi-color ( list-style-image: url("data:image/svg+xml, "); }
- Big circles!
- Big rectangles!
- b
- Невеликі circles!
- c
- Невеликі rectangles!
- Bulls
- eyes.
- Multi
- color
Ширина/висота атрибутів
Для деяких браузерів потрібні атрибути width і height які мають бути встановлені на
Кодування
Побудова обох рішень @Marc та @jessica - це рішення, яке я використовую:
Li ( position:relative; ) li:before ( content:""; display: block; position: absolute; width: 6px; height:6px; border-radius:6px; left: -20px; top: .5em; background- color: #000;
Я використовую em для розмірів шрифту, тому якщо ви встановили top значення в.5em воно завжди буде поміщено в середину вашого першого рядка тексту. Я використав left:-20px тому що це є позиція left:-20px за замовчуванням у браузерах: parent padding/2
Я знаю, що це дійсно, дійсно, старе питання, але я грав із цим і придумав спосіб, якого я не бачив. Дайте списку колір, а потім перезапишіть колір тексту за допомогою::first-line селектора::first-line . Я не експерт, тому, можливо, щось не таке з цим підходом, що мені не вистачає, але, схоже, він працює.
li ( color: blue; ) li::first-line ( color: black; )
- House
- Garden
У статті представлено кілька способів, які дозволяють встановити певний маркер для ненумерованого списку, а також зазначені їхні переваги та недоліки
Якщо проаналізувати який-небудь сайт, то можна виявити той факт, що в контенті дуже часто присутні різні списки: меню, список товарів і т. д. У HTML-коді за нумерований список відповідає тег , а за маркований - .
Ще варто відзначити той факт, що на практиці марковані списки зустрічаються набагато частіше, але при цьому вони мають один невеликий недолік. Маркер у списку відображається по-різному, залежно від браузера. Для серйозного дизайнера це проблема.
Щоб усунути цей негативний ефект, треба скасувати висновок маркера, скориставшись властивістю list-style :
ol, ul (list- style: none; )
З цього починається формування списку з унікальними маркерами та значками. Нижче представлені найпоширеніші способи представлення унікальних та однакових для всіх браузерів значків елементів списку.
Маркери через картинки
Найпоширеніший і найпростіший спосіб вказати для списку маркер – це скористатися бекграундною картинкою (властивість background). Метод ґрунтується на вказівці таблиці стилів фонового малюнка для елементів списку, а також внутрішній відступ (властивість padding), який зарезервує місце для нового маркера. Нижче наведено приклад коду:
ul ( list- style: none; ) li( background: url(шлях- до- картинці) no- repeat; padding- left: 20px; )
Цей спосіб тішить своєю унікальністю, тому що дозволяє встановити абсолютно будь-який маркер у вигляді картинки. Нижче показано, як наш код буде виглядати у браузері:
Головна позитивна сторона цього методу полягає в 100%-ної кросбраузерності, але, не дивлячись на це, є маленький недолік. Використання зображення – це додаткове звернення до сервера.
Маркери за допомогою before
Існує варіант, коли можна обійтися без малюнку, якщо дизайнерські умови дозволяють це. Таке часто допускається при оформленні основного контенту, коли список маркується найпростішими елементами, типу квадратик ( ) або стрілочка (→). Таким чином, ми підійшли до того, що як маркер може виступати будь-який відповідний спецсимвол.
Далі виникає питання, як спецсимволи вставляти в елементи списку. Природно не вручну, інакше це був би дуже затягнутий і нудний процес, плюс ще й трудомісткий. Вийти із цієї ситуації нам допоможе псевдоелемент before, Застосування якого прив'язується до певного селектора, що дозволяє автоматизувати наш процес присвоєння маркерів зі спецсимволів. Таке рішення підходить до більшості браузерів, з урахуванням того, що для IE буде прописано expression.
Нижче наведено приклад коду, який формує маркований список з коротким тире:
li( this. innerHTML = "-" + this. innerHTML) /*хак для IE*/ ) li: before( content: " \201 3" ; }
На практиці отримаємо таку картину:
Нагадую про те, що в реальних умовах хакі підключаються умовними коментарями.
З використанням цього методу головне знати кодування необхідного значка. Також варто зазначити, що для expresion спецсимволи прописуються числовою комбінацією або мнемонічним кодом. Що стосується властивості content , то в цьому випадку спочатку ставиться сліш, а потім йде запис шістнадцяткового коду.
Використання insertAdjacentHTML
Вищезгаданий спосіб не завжди коректно відпрацьовує в легендарному IE (не дивлячись на хак). Точніше, "милиці" для цього браузера не до кінця доопрацьовані. Більш дієвим є метод, заснований на insertAdjacentHTML, Нижче представлений код цього методу:
li( //z-index: expression(runtimeStyle.zIndex = 1, insertAdjacentHTML("afterBegin", "-")); }
Маркери, намальовані CSS-властивістю
Деякі квадратні маркери можна намалювати за допомогою деяких CSS-властивостей. Наприклад, квадрат із кольоровою заливкою малюється через властивість background-color , а квадратик як рамки – border (до речі, квадрат із заливкою можна намалювати й у такий спосіб). Приклад запису в CSS-файлі:
li( //z-index: expression(runtimeStyle.zIndex = 1,це. innerHTML = "" + Це. innerHTML) /* хак для ие6 і 7 */) li: before, . listMarkerBackColor( background- color: #539127; width: 7px; height: 7px; content: "" ; float: left; margin: 6px 6px 0 0 ; overflow: hidden; ) html . listMarkerBackColor( margin- right: 1px; /* виправляємо малюнковий косяк у IE6 */ }
Таким чином, мальований CSS-властивістю маркер виглядатиме на практиці:
Використання before та first-child у комплексі
Такий спосіб часто застосовується при оформленні хлібних крихт на сайті. Хто не знає про що мова, дивимося на приклад нижче
У такому разі кожне посилання відокремлюється один від одного спецсимволом, але перед першим елементом ніякого спецсимволу не повинно бути. У цьому нам допоможе псевдоклас first-child, який звертається лише до першого елементу списку. У кодовому вигляді це має виглядати так
HTML
< ul> < li>< a href= "#" >Головна a> li> < li>< a href= "#" >Блог a> li> < li>< a href= "#" >CSS a> li> < li>Валідний код при використанні target = "_blank" li> ul>
li: before( content: " \21 92" ; ) li: first- child: before( content: "" ; )
Варто також зазначити, що такий прийом використовують не тільки для хлібних крихт, але і для звичайних маркованих списків, залежно від дизайнерського завдання.
У яких браузерах працює?
6.0+ | 4.0+ | 9.5+ | 3.0+ | 3.0+ | - | - |
Висновки
Підсумовуючи, можна назвати те що, що застосування псевдоелемента before є виправданим і раціональним переважно контенті, оскільки там висувають особливих вимог до оформлення списків. Це у свою чергу дозволить зменшити навантаження на сервер у порівнянні з варіантом, коли використовують картинку. А якщо ще відзначити той факт, що в основному контенті може бути дуже багато маркованих списків, то різниця може стати суттєвішою. Але картинки значно виграють у плані дизайнерських рішень маркера.
Щоб рядки маркованого списку виділити якось від основного тексту, можна зробити так, щоб колір маркерів у списку відрізнявся від кольору тексту.
За замовчуванням стоїть чорна крапка. Якщо просто встановити колір елементу li, то нічого не вийде - колір буде заданий усьому рядку, а потрібно змінити тільки колір маркера (ul li колір точок).
Як змінити колір булітів за допомогою CSS
- Приховуємо оригінальні маркери списку за допомогою властивості list-style-type
- Додаємо свої власні маркери за допомогою псевдоелементу :beforeта властивості content. Це дозволить вставити будь-який текст або символ перед елементом li.
- Зовнішнім виглядом маркера можна керувати через стилі CSS, змінюючи колір, шрифт, фон та інше. Я використовував жирне зображення шрифту Монтсеррат.
Якщо у вас виникла ситуація, коли маркери з'явилися в непотрібних місцях, наприклад, у головному меню або в дублюючому меню у футері, то це можна легко виправити. Просто допишіть батьківський елемент, де знаходяться списки, колір маркерів яких нам треба змінити. Я додав слово articleі тепер ці зміни стали належати лише до контентної області сайту.
article li ( list-style-type: none; /* Приховуємо маркери, що відображаються за замовчуванням */ ) article li:before ( font-family: "Montserrat", sans-serif; font-weight: 400; color: #d7002e; /* Колір маркера */ content: " "; /* Маркер */ padding-right: 7px; / * Відступ від маркера до тексту */ )Існує два популярні способи зміни кольору маркерів, щоб вони відрізнялися від кольору тексту.
Використання
Всередину кожного елемента
створюємо конструкцію
У цьому колір маркерів визначається стильовим властивістю color для селектора li , а колір тексту - селектора span (приклад 1).
Приклад 1. Використання вкладених тегів
- Скрипка
- Гітара
- Волинка
- Шарманка
- Челеста
Результат цього прикладу показаний нижче (рис. 1).
Мал. 1. Маркери, які відрізняються за кольором від основного тексту
Незважаючи на простоту, метод незручний, особливо при об'ємних списках, адже до кожного пункту списку тепер доведеться додавати .
Використання:before
Сенс у наступному - прибираємо оригінальні маркери списку через властивість list-style-type і додаємо свої власні маркери за допомогою псевдоелементу ::before та властивості content. Така зв'язка дозволяє вставляти будь-який текст або символ перед елементом, у разі
Приклад 2. Використання псевдоелементу :: before
- Північ
- Південь
- Захід
- Схід
Результат цього прикладу показано на рис. 2.
У цій статті підручника мова піде про роботу зі списками CSS, ви навчитеся змінювати тип маркера, розташування маркера щодо елемента списку, створювати власні маркери і навіть змінювати колір маркера.
Думаю, ви вже знаєте, що в HTML 5 застосовується два основні види списків (якщо не брати до уваги списки описів та елементи меню):
- нумерований (упорядкований) список – HTML елемент
- маркований (невпорядкований) список – HTML елемент
CSS надає нам широкі можливості форматування зовнішнього вигляду цих списків, розглянемо основні з них.
Зміна типу маркера
Перше властивість, яке хотілося б розглянути цю властивість list-style-type , воно визначає тип маркера елемента списку.
Меню навігації, наприклад, часто складається зі звичайних маркованих списків (HTML елемент
- ), за замовчуванням маркер яких відображається у формі зафарбованого кола, щоб його прибрати необхідно, скористатися CSS властивістю list-style-type зі значенням none :
ul(list-style-type: none; /* прибираємо маркер у списку */
}
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
Для маркованих (невпорядкованих) списків (HTML елемент
- ) передбачено три типи маркерів: у формі зафарбованого кружка (disc - це значення за замовчуванням), маркер у формі порожнього кола (сircle ) та у формі квадрата (square ), а для нумерованих (упорядкованих) списків (елемент
- ) всі варіанти, що залишилися. Повний списокрозміщений у наступній таблиці:
Значення Опис none Маркер не відображається. disc Маркер у формі зафарбованого кухоль. Це значення за промовчанням. armenian Числовий маркер (традиційна Вірменська нумерація). circle Маркер у формі кола. cjk-ideographic Прості ідеографічні числа. decimal Числовий маркер (десяткові арабські числа, що починаються з 1). decimal-leading-zero Числовий маркер (десяткові арабські числа, що починаються з 1 і доповнені початковим нулем - 01, 02, 03...). georgian Числовий маркер (традиційна Грузинська нумерація – an, ban, gan, …, he, tan, in, in-an…). hebrew Числовий маркер (традиційна Єврейська нумерація). hiragana Числовий маркер (японська складова абетка Хірагана - a, i, u, e, o, ka, ki...). hiragana-iroha Числовий маркер (японська складова абетка Хірагана іроха - i, ro, ha, ni, ho, he, to, ...). katakana Числовий маркер (японська складова абетка Катакана - A, I, U, E, O, KA, KI, ...). katakana-iroha Числовий маркер (японська складова абетка Катакана Іроха - I, RO, HA, NI, HO, HE, TO, ...). lower-alpha Літери ascii нижнього регістру (a, b, c, d...z). lower-greek Рядкові грецькі букви (α, β, γ, δ, тощо). lower-latin Рядкові латинські літери (a, b, c, d, ... z). lower-roman Римські числа у нижньому регістрі (i, ii, iii, iv, v тощо). square Маркер у вигляді квадрата. upper-alpha Літери ascii верхнього регістру (A, B, C, D,...Z). upper-latin Великі латинські літери (A, B, C, D, ... Z). upper-roman Римські цифри в верхньому регістрі(I, II, III, IV, V тощо). Звертаю Вашу увагу, що значення hebrew, cjk-ideographic, hiragana, hiragana-iroha, katakana, katakana-iroha не підтримуються браузером Internet Explorer .
Давайте розглянемо приклад використання властивості list-style-type у тексті:
Приклад використання властивості list-style-type - /* Список зі значенням типу маркера за замовчуванням (disc). */
- /* нумерований список із типом маркера lower-roman */
- Елемент списку
- Елемент списку
- Елемент списку
- /* маркований список з типом маркера circle */
- Елемент списку
- Елемент списку
- Елемент списку
У даному прикладіми створили два стилі, перший встановлює тип маркера - римські числа в нижньому регістрі (значення lower-roman), ми його застосували до нумерованого списку (HTML елемент
- ), а до маркованого списку (HTML елемент
- ), щоб встановити свій тип маркера, або створити стилі, які застосовуватиме певний маркер до парних, або непарних елементів списку, як розглянуто в наступному прикладі:
Приклад чергування стилів якості list-style-type - Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
У цьому прикладі ми стилізували усі непарніелементи списку – вказали тип маркера квадрат, а колір тексту вказали зелений. Парніелементи списку отримали такий стиль: червонийколір тексту та відсутністьмаркер.
Результат нашого прикладу:
Розташування маркера щодо елемента списку
Результат нашого прикладу:
Мал. 71 Приклад використання властивості list-style-position (розташування маркера/цифри у списках).
Створення власних маркерів
Рано чи пізно перед Вами стане необхідність створити маркери списку зі своїм дизайном, завдяки CSS властивості list-style-image ми це бажання зможемо реалізувати у Вашому проекті.
Синтаксис властивості наступний:
ol( list-style-image : url("images/primer.png") ; /* вказуємо відносний шлях до зображення */ } ul(list-style-image:; /* вказуємо абсолютний шлях до зображення */ }Значення у дужках відповідає шляху до зображення, яке ви плануєте використовувати як маркера. Шлях до зображення може бути як абсолютний, і відносний. При зазначенні відносного шляху важливим моментом є те, що його необхідно вказувати щодо розміщення таблиці стилів, а не сторінки.
Якщо ви плануєте оформити власні маркери, вам доведеться використовувати програму для редагування графіки, або скористатися вже готовими наборами. Зверніть увагу на такий момент, який може статися, навіть якщо ви все зробили правильно, зображення може не завантажитися на сторінку, в цьому випадку необхідно відредагувати зображення таким чином, щоб його фон став прозорим.
Давайте розглянемо приклад використання власних маркерів у документі:
Приклад використання CSS властивостей list-style-image .test( list-style-image : url("http://сайт/images/mini5.png"); /* вказуємо абсолютний шлях до зображення, яке буде використано як маркер */ } - Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- Елемент списку
- ) вставляємо псевдоелементом (:before) згенерований контент (CSS властивість content), який ідентичний за зовнішньому виглядумаркеру в маркованому списку (HTML елемент
- ), тільки вже необхідного для нашого завдання кольору.
- ). Якщо в даному випадку не застосовувати цю властивість, то маркер буде впритул до тексту, що візуально негарно. Робота з внутрішніми та зовнішніми відступамиелементи будуть детально розглянуті в наступній статті підручника " ".
Запитання та завдання на тему
Перед тим як перейти до вивчення наступної теми, пройдіть практичні завдання:
Якщо у Вас виникають труднощі під час виконання практичного завдання, Ви завжди можете відкрити приклад в окремому вікні і проінспектувати сторінку, щоб зрозуміти, який код CSS був використаний.
2016-2019 Денис Большаков, зауваження та пропозиції щодо роботи сайту Ви можете надіслати на адресу сайт@gmail.com
Звертаю Вашу увагу, що в даному прикладі використано властивість padding-right , яка дозволила зробити внутрішній відступ праворуч у кожному елементі списку (HTML елемент
- ). Якщо в даному випадку не застосовувати цю властивість, то маркер буде впритул до тексту, що візуально негарно. Робота з внутрішніми та зовнішніми відступамиелементи будуть детально розглянуті в наступній статті підручника " ".
- ) ми застосували стиль, який встановлює тип маркера у вигляді порожнього кола (значення circle ).
Результат нашого прикладу:
Звертаю Вашу увагу, що ви можете застосувати властивість list-style-type навіть до окремо взятого списку (HTML елемент
У цьому прикладі ми вказуємо абсолютний шляхдо зображення, яке буде використано як маркер.
Результат нашого прикладу:
Зміна кольору маркера в CSS
На завершення цієї статті давайте розглянемо просунутий спосіб зміни кольору маркера без зміни кольору елемента, з використанням CSS властивості content і раніше розглянутого псевдоелемента :before :
Суть цього способу полягає в тому, що ми перед кожним елементом списку (HTML елемент