#php #wordpress #wordpress-gutenberg
Вопрос:
Я пытаюсь добавить блок «поля», чтобы упростить определение того, какое заполнение находится выше или ниже блока. Это использование полей ACF для ввода пользователем числа. Проблема, с которой я сталкиваюсь, заключается в том, что при реагировании заполнение должно измениться, я сделал это с calc()
помощью, но это переопределяет стиль каждого блока на основе заполнения последних блоков.
Как я могу настроить это так, чтобы это было для каждого отдельного блока на странице?
ТИА.
function render()
{
$margin = get_field('margin');
?>
<style>
.margin-block {
margin-top: <?= $margin; ?>px;
background: blue;
}
@media (max-width: 1199px) {
.margin-block {
margin-top: calc(<?= $margin; ?>px * 0.53);
}
}
</style>
<section class="margin-block"></section>
<?php
}
Комментарии:
1. Ну, вам, очевидно, придется написать более конкретные селекторы в вашем CSS, которые нацелены только на рассматриваемый элемент. Это
.margin-block
выбирает все элементы с этим классом, и что правила CSS, повторяющие один и тот же селектор и задающие одни и те же свойства, будут перезаписывать друг друга, разве вам это не было ясно с самого начала?2. Возможно, вам не следует с самого начала писать отдельное правило для каждого элемента. Используйте переменную CSS в своей таблице стилей, а затем установите эту переменную с помощью встроенного стиля в самом элементе.
Ответ №1:
Для тех, кому интересно, я придумал решение, которое, похоже, отлично работает, если вытащить идентификатор блока и добавить его в класс.
function render( $block )
{
$id = $block['id'];
$margin = get_field('margin');
$style_desktop = ".margin-block-{$id} { margin-top: {$margin}px; }";
$style_mobile = "@media (max-width: 1199px) { .margin-block-{$id} { margin-top: calc({$margin}px * 0.53); } }"
?>
<style>
<?= $style_desktop; ?>
<?= $style_mobile; ?>
</style>
<section class="margin-block-<?= $id; ?>"></section>
<?php
}