Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Верстка для галереи
 
 автор: Dagdamor   (04.03.2008 в 19:35)   письмо автору
 
 

Есть галерея картинок на странице, каждая картинка - это превьюшка + название, все обернуто в DIV фиксированной ширины и высоты.
Вопрос: как сделать так, чтобы можно было вывести штук 20 этих DIVов на страницу, а браузер сам бы автоматически подбирал количество превьюшек на строке, разбивая их по строкам?
Написал <div style="float:left">, но это приводит к тому, что весь массив дивов (хоть и правильно поделенных на строки) жмется к левому краю страницы, а справа остается нелицеприятная пустота. Нужно сделать так, чтобы отображалось по центру страницы.

   
 
 автор: Dagdamor   (04.03.2008 в 19:36)   письмо автору
 
   для: Dagdamor   (04.03.2008 в 19:35)
 

Вот пример, чтобы пояснить...

<style>
div { border:1px solid black; }
div.pic { float:left; width:100px; height:100px; margin:5px; }
</style>

<div style="width:380px;height:250px">

<!-- 1-я "картинка" -->
<div class="pic" style="background-color:green"></div>

<!-- 2-я "картинка" -->
<div class="pic" style="background-color:red"></div>

<!-- 3-я "картинка" -->
<div class="pic" style="background-color:blue"></div>

<!-- 4-я "картинка" -->
<div class="pic" style="background-color:yellow"></div>

</div>


Получается такое: http://img530.imageshack.us/img530/8264/test1lf0.gif
А хотелось бы такое: http://img530.imageshack.us/img530/5949/test2wy2.gif
Ну или как вариант, такое: http://img530.imageshack.us/img530/3217/test3ka4.gif

   
 
 автор: AlexSol   (04.03.2008 в 19:45)   письмо автору
 
   для: Dagdamor   (04.03.2008 в 19:36)
 

на css нереализуемо. либо javascript, либо таблица

   
 
 автор: Dagdamor   (04.03.2008 в 19:50)   письмо автору
 
   для: AlexSol   (04.03.2008 в 19:45)
 

А как можно сделать это при помощи javascript?

   
 
 автор: ~Z0RR0~   (05.03.2008 в 10:40)   письмо автору
 
   для: Dagdamor   (04.03.2008 в 19:50)
 

Можно и без явы, зачем она тут?
Только хотелось бы знать ширина фиксированная? Т.е. по 3 картинки на строчку или надо чтобы при растягивании страницы контент скакал?
Подробнее...

   
 
 автор: AlexSol   (05.03.2008 в 10:46)   письмо автору
 
   для: ~Z0RR0~   (05.03.2008 в 10:40)
 

читайте внимательнее:

браузер сам бы автоматически подбирал количество превьюшек на строке

очевидно, что с фиксированной шириной ни о какой автоматике речи не может быть.

   
 
 автор: ~Z0RR0~   (05.03.2008 в 10:53)   письмо автору
 
   для: AlexSol   (05.03.2008 в 10:46)
 

все равно мне кажется что можно без скриптов обойтись. Просто подробнее нужно информацию дать.

   
 
 автор: AlexSol   (05.03.2008 в 10:59)   письмо автору
 
   для: ~Z0RR0~   (05.03.2008 в 10:53)
 

да кудаже подробнее, даже есть пример с картинками ))

хотя в примере ширина фиксирована...
Автору: посмотрите выровнять по центру <div> может подойдет.

   
 
 автор: ~Z0RR0~   (05.03.2008 в 11:06)   письмо автору
 
   для: AlexSol   (05.03.2008 в 10:59)
 

Ссылка на выравнивание по горизонтали, так ведь? Если да, то в примере у блока ширина фиксированная.

   
 
 автор: AlexSol   (05.03.2008 в 11:14)   письмо автору
 
   для: ~Z0RR0~   (05.03.2008 в 11:06)
 

фиксированная, как и в сообщение автор: Dagdamor (04.03.2008 в 19:36)

если нефиксированая, то только скриптами.

   
 
 автор: ~Z0RR0~   (05.03.2008 в 11:16)   письмо автору
 
   для: AlexSol   (05.03.2008 в 11:14)
 

Может я чего не недопонимаю, но вы выше написали *очевидно, что с фиксированной шириной ни о какой автоматике речи не может быть.*

   
 
 автор: AlexSol   (05.03.2008 в 11:22)   письмо автору
 
   для: ~Z0RR0~   (05.03.2008 в 11:16)
 

путано написал.

вот что имелось в виду:
есть блок, в нем длоки с изображением и подписью.

если ширина основного блока фиксирована, то при изменение размера окна браузера, превьюшки не будут "смещаться" занимая новое место. тоесть условие браузер сам бы автоматически подбирал количество превьюшек на строке, разбивая их по строкам не будет выполнятся. однако автор в следующем посте ширину блока всетаки фиксирует...

вобщем ждем автора ))

мое мнение - с фиксированной шириной основного контейнера центрирование стилями пройдет, если ширина не задана явно то только скриптом.

   
 
 автор: ~Z0RR0~   (05.03.2008 в 12:30)   письмо автору
 
   для: AlexSol   (05.03.2008 в 11:22)
 

вот теперь более понятно. Автор, ждем разъяснений.

   
 
 автор: Dagdamor   (05.03.2008 в 12:39)   письмо автору
 
   для: Dagdamor   (04.03.2008 в 19:35)
 

Ширина страницы (или внешнего дива) НЕ фиксирована и заранее неизвестна. Если бы я знал ширину заранее, никаких проблем с центрированием не возникло бы. В том-то и дело, что нужно и обеспечить автоматический перенос, и центрирование контента одновременно.

В примере ширина "380px" задана фиксированно только для примера (чтобы можно было у себя создать такой файлик и отобразилась такая же картинка). На самом деле ширина может быть любой, в зависимости от разрешения экрана.

Спасибо всем отписавшимся, но проблема до сих пор не решена (а надо), если все-таки сможете помочь - буду очень благодарен!..

   
 
 автор: neokortex   (05.03.2008 в 12:50)   письмо автору
 
   для: Dagdamor   (05.03.2008 в 12:39)
 

так а в чем проблема собственно?
вы в пхп разбираетесь?
если да то делайте через while, могу показать подробнее на примере

   
 
 автор: AlexSol   (05.03.2008 в 13:38)   письмо автору
 
   для: neokortex   (05.03.2008 в 12:50)
 

пхп тут совсем не к месту.


пример с библиотекой jQuery


<style>
#main{ width:auto; border:1px solid silver;}
#main p{
    display:block;
    float:left;
    background:#CCCC99;
    width:100px;
    height:100px;
    margin:10px
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
// размер блока превьюшки + margin
var block_small = 120;

$(document).ready(function(){
    // размер блока внутри которого центрировать
    var block_big = $("#main").width();
    // количество блоков на странице
    var num = (Math.floor(block_big/block_small));
    //отступ
    var padding_left = (block_big-block_small*num)/2;
    
    $("#container").css({"padding-left":padding_left})

});
$(window).resize(function(){
    // размер блока внутри которого центрировать
    var block_big = $("#main").width();
    // количество блоков на странице
    var num = (Math.floor(block_big/block_small));
    //отступ
    var padding_left = (block_big-block_small*num)/2;
    
    $("#container").css({"padding-left":padding_left})
});
</script>

<div id="main">
<div id="container">
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
</div>
</div>

   
 
 автор: Dagdamor   (05.03.2008 в 13:43)   письмо автору
 
   для: AlexSol   (05.03.2008 в 13:38)
 

neokortex, да, немного разбираюсь ;) www.phpc.ru

AlexSol, спасибо за пример. Жаль, что чистым CSS разрулить нельзя. Вроде задача не супер-сложная. Будем мучить JS :)

UPD: Пример работает как часы! AlexSol, еще раз спасибо огромное!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования