У меня есть определенная страница, на которой мне нужно просто изменить цвет фона только на этой странице, и эта структура страницы начинается так:
<body class = "...">
<div class = "start-class">
......
</div>
</body>
и я думал поставить functions.php
как:
add_filter( 'body_class', 'my_css');
function my_css( $classes ) {
if ( is_page(82) )
find div that has specific "start-class" because it doesn't have any id
$classes[] = 'my-custom';
return $classes;
}
есть ли способ добавить это?.. спасибо всем!! Ваше здоровье!
Если вы измените / добавите следующий php-код в свой тег body
в файле header.php
...
<body <?php body_class(); ?> >
... Wordpress автоматически добавит «классы тела», среди которых page-id-xxx
, где «xxx» означает индивидуальный идентификационный номер для каждой страницы, который соответствует идентификатору страницы в базе данных. Затем вы можете создать правило CSS с background-color
для этого идентификатора (#page-id-xxx { background-color: #abc; }
и добавить его либо в общую таблицу стилей, либо через настройщик только на эту страницу.
Я знаю, что вы это имели в виду, но в CSS нет селекторов для родительских элементов, поэтому описанный способ — это один из способов все-таки добиться желаемого результата. Другим было бы использование jQuery/javascript, но только css невозможно.
Тогда используйте .page-id-xxx .start-class { ... }
.
@CBroe Ну, OP написал «найти div с определенным начальным классом, потому что у него нет идентификатора», поэтому, очевидно, идентификатора страницы еще нет, поэтому мой ответ ...
@Johannes Я думаю, они имели в виду, что сам элемент .start-class
не имеет определенного идентификатора. Вызов body_class()
для добавления классов в тело является де-факто «стандартом», которого придерживается почти каждая тема.
@Johannes, этот ‵<div>‵ покрывает все тело, как тело находится за ‵<div>‵ , на самом деле я уже пытался добавить новый класс в тело, используя ‵add_filter( 'body_class', 'my_css'); ‵ и не применил ‵background-color #red !важно;‵ вещь ... с отладкой хрома я вижу, что тело находится за div ....
Ну, можете использовать .page-id-xxx .start-class { background-color: red !important; }
, если у вас уже есть идентификатор страницы. В этом случае просто убедитесь, что там есть двоеточие (:
), а не #red
, как вы это сделали, а либо red
без «#», либо шестнадцатеричный код, например #ff0000
, для определения цвета). Если у вас еще нет идентификатора страницы в body
, используйте метод, который я описал в своем ответе дополнительно.
Используйте приведенный ниже код, чтобы добавить класс тела для определенных страниц.
add_filter('body_class', 'custom_body_class');
function custom_body_class($classes) {
if (is_page(38034))
$classes[] = 'new-class';
return $classes;
}
На основе пользовательского класса вы можете изменить цвет фона определенных страниц. Также посетите https://developer.wordpress.org/reference/functions/body_class/
В конце я решил применить полную прозрачность на всех уровнях элементов контейнера внутри тела с помощью:
background-color:rgba(0,0,0,0.0) !important;
везде, где это применимо, чтобы я мог использовать только фон внутри тела с этим add_filter( 'body_class', 'my_css');
Я сказал в посте, чтобы облегчить мою жизнь ... в любом случае спасибо всем @Johannes , @Broe , @Rahul Srivastava !
Ваше здоровье !!!
Привет @Johannes, спасибо за ваш ответ, но я имел в виду, например, добавить новый класс внутри
<div>
элемента рядом с этим"start-class"
, например, заменить его, потому что этот div уже покрывает всю страницу ....