[Решено] Почему правило CSS по-разному работает?

Главные вкладки

Аватар пользователя sureng sureng 25 июля 2010 в 20:26

Здравствуйте.
Подскажите, пожалуйста, как такое может быть, чтобы одно и тоже правило CSS
в разных шаблонах работало по-разному???

Делаю свою первую тему. На главной вывожу новости в две колонки
с помощью CSS { float:left; width:48%; margin-right:10px;}
и получается вот так: все новости в одну колонку, а вторая пустая.

Но-о, когда добавляю тоже правило к теме Garland, то получается так как надо,
вот, как на этом скрине:

В чем загвоздка???

Пните, пожалуйста, в нужном направлении.

Комментарии

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 25 июля 2010 в 20:39

В первом случае или уменьшить ширину колонок или уменьшить марджин
Также, если колонок 2, то для правой наверное имеет смысл задавать
float:right

И поставьте себе Firebug

Аватар пользователя sureng sureng 25 июля 2010 в 20:55

<a href="mailto:volocuga@drupal.org">volocuga@drupal.org</a> wrote:
В первом случае или уменьшить ширину колонок или уменьшить марджин
Также, если колонок 2, то для правой наверное имеет смысл задавать
float:right

И поставьте себе Firebug


Так дело том, что 2-я колонка появляетя в теме Garland автоматически, когда задаешь диву с выводом материала это правило... в этом и суть использования этого правила CSS для вывода материала, что не надо Вьюс и Панелс. А вот в моей теме материал в 2-е колонки с помощью этого правила выстраиваться не хочет.
Маржин менял и ширину тоже - не помогло.

Аватар пользователя ihappy ihappy 25 июля 2010 в 21:15

почему фиг знает. телепатов нету, но я потренируюсь в телепатии немного.
наверно данный баг вылазит иза того. Что див к которому ты применяешь float лежит в внутри другого дива. У которого widht больше 50%
или может быть, потому что сам див, которому задано обтекание имеет widht больше 50%.
и еще тысяча причин, которые без кода страницы, нельзя сказать.
Может стоит воспользоватся firebug?

Аватар пользователя wazzup wazzup 25 июля 2010 в 21:40

попробуй для начала { margin:0px; padding:0px;} к самому элементу и к контейнеру
потом стоит также посмотреть в фаербаге возможно margin-right:10px; это больше чем 2%.

Аватар пользователя Xermit Xermit 25 июля 2010 в 23:48

Код в студию, а то здесь уже была одна тема в которой сначала css выпрашивали потом html, мы не гадалки, если вы стесняетесь показать код, то с проблемой будете разбираться исключительно сами.

Аватар пользователя sureng sureng 26 июля 2010 в 0:50

Xermit wrote:
Код в студию, а то здесь уже была одна тема в которой сначала css выпрашивали потом html, мы не гадалки, если вы стесняетесь показать код, то с проблемой будете разбираться исключительно сами.

Вот фрагмент где выводится контент:

<div id="cont-col">                                                    
     <div class="ind">
        <div class="bg-node">
           <div class="node-column">
              <?php print $content;?>
            </div>
        </div>
     </div>                                      
  </div>

А вот и стили:

#cont-col { overflow:hidden; height:1%; padding:9px 0px 0px 0px;}
#cont-col .ind { width:100%; }
.bg-node { background:url(images/bg-line3.gif) repeat-y 250px 0; width:100%; overflow:hidden;}
.node-column {float:left; width:48%; margin-right:2px;}
Аватар пользователя riyuzakki riyuzakki 26 июля 2010 в 0:57

"Xermit" wrote:
Код в студию, а то здесь уже была одна тема в которой сначала css выпрашивали потом html, мы не гадалки, если вы стесняетесь показать код, то с проблемой будете разбираться исключительно сами.

Нееее! Давайте погадаем! Мой вариант:
a) Есть:
html:

<div id="content">
  <div>
    первая статья
  </div>
  <div>
    вторая статья
  </div>
  <div>
    3 статья
  </div>
  <div>
    4 статья
  </div>
</div>

CSS:

#content { float:left; width:48%; margin-right:10px;}

b) надо:
CSS:

#content div { float:left; width:48%; margin-right:10px;}
Аватар пользователя riyuzakki riyuzakki 26 июля 2010 в 1:02

"sureng" wrote:
Вот фрагмент где выводится контент:

"sureng" wrote:
А вот и стили:

Я угадал прочитал мысли!

На правах рекламы:
Гадаю по скриншотам, снимаю порчу с серверов, отваживаю хакеров, заговариваю ssl сертификаты! Не дорого!

Аватар пользователя sureng sureng 26 июля 2010 в 13:16

Кажется, ответ найден!!!
Надо было не $content выводить в div с условием { float:left; width:48%; margin-right:10px;}
а в файле node.tpl.php задать это условие CSS.

Только теперь надо в node.tpl.php прописать условие вывода:
если страница главная - выводить с условием float:left; width:48%,
иначе в обычном виде.

Может, кто подскажет, как грамотно прописать такое условие...

Аватар пользователя riyuzakki riyuzakki 26 июля 2010 в 13:58

Конечно, подскажем! Нужно просто div`у, в котором Вы выводите $content присваивать разные классы. Неожиданно, правда?
Вообще-то, меня не покидает ощущение, что ТС полез в дебри, не зная основ. Я прав?

Аватар пользователя sureng sureng 26 июля 2010 в 14:27

riyuzakki wrote:
Конечно, подскажем! Нужно просто div`у, в котором Вы выводите $content присваивать разные классы. Неожиданно, правда?
Вообще-то, меня не покидает ощущение, что ТС полез в дебри, не зная основ. Я прав?

А что мои вопросы не говорят сами за себя?

Если можете и хотите, подскажите новичку зеленому, пожалуйста, как придать разные классы вывода $content для
page-front.tpl.php и page.tpl.php.

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 26 июля 2010 в 15:05

Привязываться нужно не к классам обёртки для $content, а к классам body. Это самый здравый и универсальный способ. Вам захочется, к примеру, поменять по условию фон целой страницы или другие элементы за пределами (или в пределах) $content - никаких проблем.

Посмотрите как в Гарланде сделано. Функцию генерации этих классов можно взять оттуда же, из template.php или, лучше, из темы basic

Аватар пользователя sureng sureng 10 ноября 2015 в 11:46

Ух-ух, таки нашел решение.
Создал node-front.tpl.php скопировал в него содержимое из node.tpl.php
и в строчке вывода поменял классы
<?php<div id="node-<?php print $node->nid?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>">?>

понял на:
<?php<div id="node-<?php print $node->nid?>" class="node-column<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>">?>

Затем воспользовавшись подсказкой отсюда
добавил в файл node.tpl.php стоку <?php if ($is_front): include "node-front.tpl.php"; return; endif; ?> 
Теперь на главной $content отображается с одним классом, на остальных с другим.

Большое спасибо ребята за поддержку, все ваши комментарии помогли.

Вышло вот так: