Вот еще одна идея, которая позволяет вам воздействовать на другие элементы без учета какого-либо конкретного селектора и только с использованием состояния :hover
основного элемента.
Для этого я буду полагаться на использование настраиваемых свойств (переменные CSS). Как мы можем прочитать в спецификации :
Пользовательские свойства являются обычными свойствами, поэтому они могут быть объявлены на любом элементе, разрешены с нормальным наследованием и каскадными правилами. ..
blockquote>Идея состоит в том, чтобы определить пользовательские свойства в основном элементе и использовать их для стилизации дочерних элементов, и поскольку эти свойства наследуются, нам просто нужно изменить их в главном элементе при наведении.
Вот пример:
#container { width: 200px; height: 30px; border: 1px solid var(--c); --c:red; } #container:hover { --c:blue; } #container > div { width: 30px; height: 100%; background-color: var(--c); }
Почему это может быть лучше, чем использование специального селектора в сочетании с hover?
Я могу предоставить по крайней мере 2 причины, которые делают этот метод хорошим:
- Если у нас есть много вложенных элементов, которые имеют одни и те же стили, это будет избегайте сложного селектора, чтобы нацелить их на зависание. Используя пользовательские свойства, мы просто изменяем значение при зависании родительского элемента.
- Пользовательское свойство может использоваться для замены значения любого свойства, а также его частичного значения. Например, мы можем определить настраиваемое свойство для цвета, и мы используем его в пределах
border
,linear-gradient
,background-color
,box-shadow
и т. Д. Это позволит нам отказаться от всех этих свойств при наведении.Вот более сложный пример:
.container { --c:red; width:400px; display:flex; border:1px solid var(--c); justify-content:space-between; padding:5px; background:linear-gradient(var(--c),var(--c)) 0 50%/100% 3px no-repeat; } .box { width:30%; background:var(--c); box-shadow:0px 0px 5px var(--c); position:relative; } .box:before { content:"A"; display:block; width:15px; margin:0 auto; height:100%; color:var(--c); background:#fff; } /*Hover*/ .container:hover { --c:blue; }
Как мы видим выше, нам нужен только один Объявление CSS для изменения многих свойств различных элементов.
Вы можете посмотреть на str.ljust
и str.rjust
. Я полагаю.
Альтернативой является, вероятно, использование метода format :
>>> '{:<30}'.format('left aligned')
'left aligned '
>>> '{:>30}'.format('right aligned')
' right aligned'
>>> '{:^30}'.format('centered')
' centered '
>>> '{:*^30}'.format('centered') # use '*' as a fill char
'***********centered***********'
str.ljust
иrjust
устарели not i>; вы просто привязались к древним функциям модуляstring
, которые были необходимы только в пред-2.3 днях, когда встроенные типы не были похожими на классы и имели только специальные методы. – abarnert 2 May 2015 в 10:35