Что я ищу:
Способ стилизовать одну половину персонажа. (В этом случае половина буквы будет прозрачной)
Что я сейчас искал и пробовал (Без удачи):
- Методы оформления половины символа / буквы
- Стилизация части персонажа с помощью CSS или JavaScript
- Применить CSS к 50% персонажа
Ниже приведен пример того, что я пытаюсь получить.
Существует ли для этого решение CSS или JavaScript, или мне придется прибегнуть к изображениям? Я предпочел бы не идти по пути изображения, поскольку этот текст будет генерироваться динамически.
ОБНОВИТЬ:
Поскольку многие спрашивают, почему я бы хотел придать стиль половине персонажа, вот почему. Мой город недавно потратил 250 000 долларов, чтобы определить для себя новый «бренд». Этот логотип - то, что они придумали. Многие люди жаловались на простоту и нехватку творчества и продолжают это делать. Моей целью было придумать этот сайт как шутку. Введите «Галифакс», и вы поймете, что я имею в виду.
источник
Ответы:
Теперь на GitHub в качестве плагина!
Не стесняйтесь раскошелиться и улучшить.
Демо | Скачать Zip | Half-Style.com (Перенаправляет на GitHub)
Часть 1: Основное решение
Демо: http://jsfiddle.net/arbel/pd9yB/1694/
Это работает с любым динамическим текстом или одним символом и все автоматизировано. Все, что вам нужно сделать, это добавить класс к целевому тексту, а об остальном позаботятся.
Кроме того, доступность исходного текста сохраняется для программ чтения с экрана для слепых или слабовидящих.
Объяснение для одного персонажа:
Чистый CSS. Все, что вам нужно сделать, это применить
.halfStyle
класс к каждому элементу, который содержит символ, который вы хотите использовать в половинном стиле.Для каждого элемента span, содержащего символ, вы можете создать атрибут данных, например здесь
data-content="X"
, и при использовании псевдоэлемента,content: attr(data-content);
чтобы.halfStyle:before
класс был динамическим, и вам не нужно было жестко кодировать его для каждого экземпляра.Пояснения к любому тексту:
Просто добавьте
textToHalfStyle
класс к элементу, содержащему текст.( JSFiddle demo )
Часть 2. Расширенное решение - Независимые левая и правая части
С помощью этого решения вы можете стилизовать левую и правую части, индивидуально и независимо .
Все то же самое, только более продвинутый CSS делает волшебство.
Показать фрагмент кода
( JSFiddle demo )
Часть 3: смешивать и улучшать
Теперь, когда мы знаем, что возможно, давайте создадим несколько вариантов.
Горизонтальные половины
Без тени текста:
Возможность Text Shadow для каждой половины части независимо:
Показать фрагмент кода
( JSFiddle demo )
Вертикальные 1/3 части
Без тени текста:
Возможность Text Shadow для каждой 1/3 части независимо:
Показать фрагмент кода
( JSFiddle demo )
-Горизонтальные 1/3 части
Без тени текста:
Возможность Text Shadow для каждой 1/3 части независимо:
Показать фрагмент кода
( JSFiddle demo )
-HalfStyle Улучшение @KevinGranger
Показать фрагмент кода
( JSFiddle demo )
-PeelingStyle улучшение HalfStyle от @SamTremaine
Показать фрагмент кода
( JSFiddle demo и на samtremaine.co.uk )
Часть 4: Готов к производству
Различные стили стиля Half-Style могут быть использованы для нужных элементов на одной странице. Вы можете определить несколько наборов стилей и указать плагину, какой из них использовать.
Плагин использует атрибут data
data-halfstyle="[-CustomClassName-]"
для целевых.textToHalfStyle
элементов и автоматически вносит все необходимые изменения.Итак, просто к элементу, содержащему текст, добавьте
textToHalfStyle
класс и атрибут данныхdata-halfstyle="[-CustomClassName-]"
. Плагин сделает всю остальную работу.Также определения классов CSS-стилей соответствуют
[-CustomClassName-]
части, упомянутой выше, и.halfStyle
связаны с ними , поэтому мы будем иметь.halfStyle.[-CustomClassName-]
( JSFiddle demo )
источник
Я только что закончил разработку плагина, и он доступен для всех желающих! Надеюсь, вам это понравится.
Просмотр проекта на GitHub - Просмотр веб-сайта проекта . (так что вы можете увидеть все стили разделения)
Применение
Прежде всего, убедитесь, что
jQuery
библиотека включена. Лучший способ получить последнюю версию jQuery - обновить тег head:После загрузки файлов убедитесь, что вы включили их в свой проект:
наценка
Все, что вам нужно сделать, - это присвоить классу
splitchar
следующий желаемый стиль для элемента, обертывающего ваш текст. напримерПосле того, как все это будет сделано, просто убедитесь, что вы вызываете функцию jQuery в вашем документе готового файла следующим образом:
Пользовательская настройка
Чтобы текст выглядел именно так, как вы хотите, все, что вам нужно сделать, это применить свой дизайн следующим образом:
Это оно! Теперь у вас есть
Splitchar
плагин все готово. Больше информации об этом на http://razvanbalosin.com/Splitchar.js/ .источник
Да, вы можете сделать это только с одним символом и только CSS.
Только Webkit (и Chrome):
http://jsbin.com/rexoyice/1/
Визуально все примеры, в которых используются два символа (будь то через JS, псевдоэлементы CSS или просто HTML), выглядят хорошо, но обратите внимание, что все это добавляет контент в DOM, который может вызвать доступность, а также выделение текста / вырезать / вставьте вопросы.
источник
background-clip: text
супер круто, и они должны рассмотреть это (или что-то подобноеtext-decoration-background
) для модуля уровня 4.JSFiddle DEMO
Мы сделаем это, используя только псевдо-селекторы CSS!
Этот метод будет работать с динамически генерируемым контентом и различными размерами шрифта и шириной.
HTML:
CSS:
Чтобы обернуть динамически сгенерированную строку, вы можете использовать такую функцию:
источник
Это может быть неактуально, а может и нет, но некоторое время назад я создал функцию jQuery, которая делает то же самое, но горизонтально.
Я назвал это «Strippex» Для «полоса» + «текст», демо: http://cdpn.io/FcIBg
Я не говорю, что это решение любых проблем, но я уже пытался применить css к половине персонажа, но по горизонтали. Так что идея та же, реализация может быть ужасной, но она работает.
Ах, и самое главное, я получал удовольствие, создавая его!
источник
pointer-events:none
в&:nth-child(2)
-&:nth-child(5)
. Это делает так, что текст может быть выделен только один раз, и вы получите только одну его копию. Вы можете увидеть это здесь: codepen.io/anon/pen/upLajЕсли вы заинтересованы в этом, то Glitch Лукаса Беббера - очень похожий и очень крутой эффект:
Создано с использованием простого SASS Mixin, такого как
Подробнее на CSS Tricks Криса Coyer в и странице Codepen Lucas Bebber в
источник
Здесь уродливая реализация в canvas. Я попробовал это решение, но результаты оказались хуже, чем я ожидал, так что здесь все равно.
источник
0.5
для остановки красного цвета тоже.Ближайший я могу получить:
Демо: http://jsfiddle.net/9wxfY/2/
Вот версия, которая использует только один диапазон: http://jsfiddle.net/9wxfY/4/
источник
$('span').width()
просто возвращает ширину первого найденного промежутка; это должно быть что-то, что вы сделали для каждой пары. Что дает мне идею ...Я только что поиграл с решением @ Arbel:
источник
Другое решение только для CSS (хотя атрибут data необходим, если вы не хотите писать CSS для письма). Этот работает больше по всем направлениям (протестировано IE 9/10, последняя версия Chrome и последняя версия FF)
источник
Ограниченное решение CSS и jQuery
Я не уверен, насколько элегантно это решение, но оно разрезает все ровно пополам: http://jsfiddle.net/9wxfY/11/
В противном случае, я создал хорошее решение для вас ... Все, что вам нужно сделать, это иметь это для вашего HTML:
Взгляните на эту самую последнюю и точную редакцию от 13.06.2016: http://jsfiddle.net/9wxfY/43/
Что касается CSS, он очень ограничен ... Вам нужно только применить его к
:nth-child(even)
источник
http://experimental.samtremaine.co.uk/half-style/
Вы можете взломать этот код для выполнения всевозможных интересных вещей - это всего лишь одна из реализаций, которую я и мой партнер разработали вчера вечером.
источник
Хорошее решение только для WebKit, использующее преимущества
background-clip: text
поддержки: http://jsfiddle.net/sandro_paganotti/wLkVt/источник
Как насчет этого для более короткого текста?
Это может даже работать для более длинного текста, если вы делаете что-то с циклом, повторяя символы с помощью JavaScript. В любом случае, результат будет примерно таким:
источник
FWIW, вот мой взгляд на это, делая это только с помощью CSS: http://codepen.io/ricardozea/pen/uFbts/
Несколько заметок:
Основная причина, по которой я это сделал, состояла в том, чтобы проверить себя и посмотреть, смогу ли я выполнить стилизацию половины персонажа, в то же время фактически предоставив содержательный ответ ОП.
Я знаю, что это не идеальное и не самое масштабируемое решение, и решения, предлагаемые людьми здесь, намного лучше для сценариев "реального мира".
Код CSS, который я создал, основан на моих первых мыслях и моем личном подходе к проблеме.
Мое решение работает только с симметричными символами, такими как X, A, O, M. ** Оно не работает с асимметричными символами, такими как B, C, F, K или строчными буквами.
** ОДНАКО, этот подход создает очень интересные «фигуры» с асимметричными символами. Попробуйте изменить X на K или на строчную букву, например, h или p в CSS :)
HTML
SCSS
источник
Вы также можете сделать это с помощью SVG, если хотите:
http://codepen.io/nicbell/pen/jGcbq
источник
Это может быть достигнуто только с помощью
:before
селектора CSS иcontent property value
.>> Смотрите на jsFiddle
источник
Вы можете использовать приведенный ниже код. Здесь, в этом примере, я использовал
h1
тег и добавил атрибут,data-title-text="Display Text"
который будет отображаться с текстом другого цвета вh1
текстовом элементе тега, что дает эффект полуцветного текста, как показано в примере ниже.источник
Просто для записи в истории!
Я придумал решение для моей собственной работы 5-6 лет назад - Gradext (чистый javascript и чистый css, никакой зависимости).
Техническое объяснение состоит в том, что вы можете создать такой элемент:
Теперь, если вы хотите создать градиент для текста, вам нужно создать несколько слоев, каждый из которых будет индивидуально окрашен, а созданный спектр будет иллюстрировать эффект градиента.
например, посмотрите на это слово lorem внутри a
<span>
и оно вызовет эффект горизонтального градиента ( посмотрите примеры ):и вы можете продолжать делать этот шаблон в течение длительного времени, а также длинный абзац.
Но!
Что если вы хотите создать эффект вертикального градиента для текстов?
Тогда есть другое решение, которое может быть полезным. Я опишу в деталях.
Предположим, наш первый
<span>
снова. но содержание не должно быть буквами индивидуально; содержание должно быть целым текстом, и теперь мы собираемся скопировать то же самое<span>
снова и снова (количество пролетов будут определять качество вашего градиента, больше срока, лучший результат, но низкую производительность). Посмотри на это:Опять же, но!
Что, если вы хотите заставить эти эффекты градиента двигаться и создавать из них анимацию?
ну, есть и другое решение для этого тоже. Вы должны обязательно проверить
animation: true
или даже.hoverable()
метод, который приведет к градиенту, чтобы начать на основе позиции курсора! (звучит круто xD)это просто, как мы создаем градиенты (линейные или радиальные) на текстах. Если вам понравилась идея или вы хотите узнать о ней больше, вам следует проверить предоставленные ссылки.
Возможно, это не лучший вариант, может быть, не самый эффективный способ сделать это, но он откроет некоторое пространство для создания захватывающих и восхитительных анимаций, чтобы вдохновить других людей на лучшее решение.
Это позволит вам использовать стиль градиента для текстов, который поддерживается даже в IE8!
Здесь вы можете найти работающую живую демоверсию, а оригинальный репозиторий находится здесь, на GitHub, с открытым исходным кодом и готов получить некоторые обновления (: D)
Это мой первый раз (да, после 5 лет, вы правильно поняли) упоминать этот репозиторий где-нибудь в Интернете, и я очень рад этому!
[Обновление - август 2019 года:] Github удалил демоверсию github-страниц этого хранилища, потому что я из Ирана! Только исходный код доступен здесь, хотя ...
источник