X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> выравнивание по центру
mfucker
mfucker
Topic Starter сообщение 6.5.2010, 21:17; Ответить: mfucker
Сообщение #1


Внизу код скрипта, который выводит рисунки на-подобие lightbox2.
Это надо поместить в head-<script type="text/javascript" src="js/jsibox_basic.js"></script>
вывод картинок:
[php]<a href="image_big" rel="rr" onclick="return jsiBoxOpen(this)" >текст</a>
<a href="image_big2" rel="rr" onclick="return jsiBoxOpen(this)" >текст</a>[/php]надо сделать, чтобы кнопочки "< prev" и "next >" выравнивались по центру, а то когда много изображений разного размера и разрешенияЮ они все время скачут. Не могу найти где это сделать. Явно это где-то в стайле: var boxHTML
Поможете?

jsibox_basic.js:
/*
* jsImageBox - slim and simple image modal viewer for webpages http://www.jsimagebox.ru
* Copyright (C) 2008 c0rr, p_ann
*
* Licensed under the terms of GNU General Public License Version 2 or later (the "GPL")
* http://www.gnu.org/licenses/gpl.html
*/


// Глобальный обьект в нем хранятся настройки и закешированы ссылки на DOM узлы и переменные состояния
var jsiBox = {
// НАСТРОЙКИ //
boxBorderColor : '#727272', // Цвет границы бокса
boxBorderWidth : '1px', // Толщина границы бокса
boxBgColor : '#484848', // Цвет фона бокса
imgBgColor : '#fff', // Цвет подложки изображения
overlayColor : '#fff', // Цвет затемнения страницы
nextArrow : 'Next >', // Следующее изображение
prevArrow : '< Prev', // Предыдущее изображение
closeSymbol : '&times;', // Значок закрытия бокса

selfDir : '' // Путь к каталогу кода бокса, если пустая строка то скрипт попробует автоматически вычислить путь
};

// Ф-ция добавляет HTML код бокса к текущему документу и кеширует ссылки на составные элементы
function jsiBoxInit()
{
if (jsiBox.selfDir == '') {
// Попробовать вычислить путь к коду - нужно для задания путей к изображениям
var scriptNodes = document.getElementsByTagName('script');
for (var i = 0; i < scriptNodes.length; i++) {
if (scriptNodes[i].src && scriptNodes[i].src.match('jsibox_basic.js')) {
jsiBox.selfDir = scriptNodes[i].src.split('jsibox_basic.js')[0];
break;
}
}
}
var boxHTML = '<style type="text/css">#jsiMainBox * {margin: 0; padding: 0; border: 0; text-decoration: none;} #jsiMainBox a.jsiBtn {outline: none; float:right; color: #fff; font-size: 10px; width: 40px; vertical-align:middle;font-weight:normal; } </style>'
+'<div id="wrapJsiBox" style="position: absolute; top:0; left:0; display: none; z-index: 1000; background-color:'+jsiBox.overlayColor+'; opacity: 0.6; filter: alpha(opacity=\'60\');"></div>'
+'<div style="position: absolute; top: 0; left: 0; width: 100%; z-index: 2000;">'
+' <div id="jsiMainBox" style="color: #fff;text-align:left;position: relative; display: none; margin: auto; z-index: 2; width: 400px; background:'+jsiBox.boxBgColor+'; border: '+jsiBox.boxBorderWidth+' solid '+jsiBox.boxBorderColor+'; padding-bottom: 4px;">'
+' <p style="text-align: right; font: bold 10px Tahoma; padding-top: 0;width:100%;overflow:hidden;padding-bottom:0;">'
+' <img src="'+jsiBox.selfDir+'img/ajax-loader2.gif" alt="" id="jsiBoxLoading" style="float:left; display:inline; margin:7px 5px 0 8px;" />'
+' <a href="#" style="padding:0 8px 0 0;width:28px;line-height:32px;margin-top:-2px" onclick="return jsiBoxClose();" class="jsiBtn">'+jsiBox.closeSymbol+'</a>'
+' <span style="width: 75px; float: right; height: 37px; position:relative;">'
+' <a href="#" id="nextJsiBoxLink" onclick="return jsiBoxNext();" style="position:absolute;top: 0;right: 0;line-height:30px;" class="jsiBtn">'+jsiBox.nextArrow+'</a>'
+' <a href="#" id="prevJsiBoxLink" onclick="return jsiBoxPrev();" style="position:absolute;top: 0;left: 0;line-height:30px;" class="jsiBtn">'+jsiBox.prevArrow+'</a>'
+' </span>'
+' </p>'
+' <p id="jsiBoxNumberOfImage" style="margin-top:-7px; padding:0 12px 2px 0;text-align:right;"></p>'
+' <div id="jsiBoxMainImageWrap" style="background:'+jsiBox.imgBgColor+'; margin: 0 8px 4px 8px; overflow: hidden; position: relative;">'
+' <img src="'+jsiBox.selfDir+'img/blank.gif" id="jsiBoxMainImage" alt="" style="display: block;" />'
+' </div>'
+' <span id="jsiBoxTitle" style="margin:0 8px; font: normal 11px Tahoma;"></span>'
+' </div>'
+'</div>';
jsiBox.wrapNode = document.getElementById('wrapJsiBox');
if (!jsiBox.wrapNode) {
document.write(boxHTML);
}
// Создание контейнера для предзагрузки изображений
jsiBox.preloadImg = new Image();
jsiBox.preloadImg.onload = jsiBoxDisplayMainImg;
// Кеширование (ссылок на) DOM узлов составных элементов бокса внутри объекта
jsiBox.wrapNode = document.getElementById('wrapJsiBox');
jsiBox.boxNode = document.getElementById('jsiMainBox');
jsiBox.progressImg = document.getElementById('jsiBoxLoading');
jsiBox.prevLinkNode = document.getElementById('prevJsiBoxLink');
jsiBox.nextLinkNode = document.getElementById('nextJsiBoxLink');
jsiBox.infoNode = document.getElementById('jsiBoxNumberOfImage');
jsiBox.wrapImgNode = document.getElementById('jsiBoxMainImageWrap');
jsiBox.mainImg = document.getElementById('jsiBoxMainImage');
jsiBox.titleNode = document.getElementById('jsiBoxTitle');

jsiBox.currentImgIndex = 0; // Порядковый номер отображаемого в текущий момент изображения "галлереи"
jsiBox.linkNodesArray = new Array(); // Массив DOM узлов ссылок на изображения текущей галлереи
}

// Запуск анимации и инициализации навигации
function jsiBoxDisplayMainImg()
{
// инициализация навигации
var previousImgIndex = jsiBox.currentImgIndex - 1;
if (previousImgIndex >= 0) {
jsiBox.prevLinkNode.style.display = '';
} else {
jsiBox.prevLinkNode.style.display = 'none'; // Скрыть ссылку "=>"
}
var nextImgIndex = jsiBox.currentImgIndex + 1;
if (nextImgIndex < jsiBox.linkNodesArray.length) {
jsiBox.nextLinkNode.style.display = '';
} else {
jsiBox.nextLinkNode.style.display = 'none'; // Скрыть ссылку "<="
}


jsiBoxDimMainImage(10); // Запускаем анимацию "растворения"
jsiBox.progressImg.style.display = 'none'; // Убираем индикатор загрузки
jsiBox.titleNode.innerHTML = '';
jsiBox.titleNode.style.display = 'none'; // Убираем тайтл изображения
}

// Ф-ция анимации растворения - увеличивает прозрачность изображения от заданного в opacity значения до нуля (диапазон opacity [0-10])
function jsiBoxDimMainImage(opacity)
{
var newOpacity;
if (opacity) {
newOpacity = opacity; // первый вызов ф-ции, задаем свойство
} else {
var step = 2; // Шаг изменения
newOpacity = jsiBox.mainImg.style.opacity*10 - step; // Изменяем значение
}
jsiBox.mainImg.style.opacity = newOpacity/10; // для всех нормальных броузеров
jsiBox.mainImg.style.filter = 'alpha(opacity=' + newOpacity*10 + ')'; // для IE
if (jsiBox.mainImg.style.opacity > 0) {
setTimeout('jsiBoxDimMainImage()', 35); // продолжим анимацию
} else {
jsiBox.mainImg.style.display = 'none';
jsiBox.mainImg.style.opacity = 0;
jsiBox.mainImg.style.filter = 'alpha(opacity=100)';
jsiBoxResize(); // Запуск анимации ресайза бокса
}
}

// Ф-ция анимирует изменение размеров блока при разнице размеров загружаемых изображений
function jsiBoxResize()
{
var leftInnerMargin = parseInt(jsiBox.wrapImgNode.style.marginLeft, 10) || 0;
var rightInnerMargin = parseInt(jsiBox.wrapImgNode.style.marginRight, 10) || 0;
var leftBorder = parseInt(jsiBox.boxNode.style.borderLeftWidth, 10) || 0;
var rightBorder = parseInt(jsiBox.boxNode.style.borderRightWidth, 10) || 0;
// Изменение ширины относительно внутреннего блока, однако ширину менять будем внешенему
var deltaWidth = jsiBox.wrapImgNode.offsetWidth - jsiBox.preloadImg.width;
// Вычисляется изменение высоты только для блока вокруг изображения, внешние блоки отресайзятся сами при изменении высоты внутреннего
var deltaHeight = jsiBox.wrapImgNode.offsetHeight - jsiBox.preloadImg.height;

// Шаг изменения поставим в зависимость от расстояния, чтобы "сначала быстро, потом медленно"
var widthResizeStep = deltaWidth / 4;
var heightResizeStep = deltaHeight / 4;
widthResizeStep = (widthResizeStep > 0) ? Math.ceil(widthResizeStep) : Math.floor(widthResizeStep);
heightResizeStep = (heightResizeStep > 0) ? Math.ceil(heightResizeStep) : Math.floor(heightResizeStep);

if (Math.abs(deltaWidth) > Math.abs(widthResizeStep)) {
var newWidth = jsiBox.boxNode.offsetWidth - leftBorder - rightBorder - widthResizeStep;
jsiBox.boxNode.style.width = newWidth + 'px'; // Изменение ширины внешнего блока, внутренние блоки отресайзятся сами
}
if (Math.abs(deltaHeight) > Math.abs(heightResizeStep)) {
var newHeight = jsiBox.wrapImgNode.offsetHeight - heightResizeStep;
jsiBox.wrapImgNode.style.height = newHeight + 'px'; // Изменение высоты внутреннего блока
}

if ((Math.abs(deltaHeight) > Math.abs(heightResizeStep)) || (Math.abs(deltaWidth) > Math.abs(widthResizeStep))) {
setTimeout('jsiBoxResize()', 35); // Анимируем дальше
} else {
// Стопорим и "добиваем" нужные значения, т.к. в процессе анимации они могли быть вычислены не точно
jsiBox.boxNode.style.width = jsiBox.preloadImg.width + leftInnerMargin + rightInnerMargin + 'px';
jsiBox.mainImg.style.width = jsiBox.preloadImg.width + 'px';
jsiBox.wrapImgNode.style.height = jsiBox.preloadImg.height + 'px';
jsiBox.mainImg.src = jsiBox.preloadImg.src;
jsiBox.mainImg.style.display = 'block';
// Нарисуем тайтл изображения
var imageTitle = (jsiBox.linkNodesArray[jsiBox.currentImgIndex]) ? jsiBox.linkNodesArray[jsiBox.currentImgIndex].title : '';
if (imageTitle != '') {
jsiBox.titleNode.style.display = 'block';
jsiBox.titleNode.innerHTML = imageTitle;
}
jsiBoxLightenMainImage(); // Запускаем анимацию "проявления" изображения
//jsiBoxAnimSglOverlay('animation3.gif');
//jsiBoxAnimMultiOverlay('animation3.gif');
}
}

// Уменьшает прозрачность изображения от текщего значения до полностью непрозрачного - эффект проявления
function jsiBoxLightenMainImage()
{
var step = 2;
var newOpacity = jsiBox.mainImg.style.opacity*10 + step;

jsiBox.mainImg.style.opacity = newOpacity/10;
jsiBox.mainImg.style.filter = 'alpha(opacity=' + newOpacity*10 + ')';

if (jsiBox.mainImg.style.opacity < 1) {
setTimeout('jsiBoxLightenMainImage()', 35);
} else {
jsiBox.mainImg.style.opacity = '';
jsiBox.mainImg.style.filter = '';
}
}

// Показ предыдущего изображения "галлереи"
function jsiBoxNext()
{
jsiBox.progressImg.style.display = 'block'; // Показать индикатор загрузки

var nextImgIndex = jsiBox.currentImgIndex + 1;
if (nextImgIndex < jsiBox.linkNodesArray.length) {
jsiBox.currentImgIndex = nextImgIndex;
jsiBox.preloadImg.src = jsiBox.linkNodesArray[nextImgIndex].href;
}
return false;
}

// Показ следующего изображения "галлереи"
function jsiBoxPrev()
{
jsiBox.progressImg.style.display = 'block'; // Показать индикатор загрузки

var prevImgIndex = jsiBox.currentImgIndex - 1;
if (prevImgIndex >= 0) {
jsiBox.currentImgIndex = prevImgIndex;
jsiBox.preloadImg.src = jsiBox.linkNodesArray[prevImgIndex].href;
}
return false;
}

// Ф-ция закрытия бокса
function jsiBoxClose()
{
jsiBox.wrapNode.style.display = 'none';
jsiBox.boxNode.style.display = 'none';
return false;
}

// Отправляет изображение на просмотр в боксе
function jsiBoxOpen(domNode)
{
var docLinks = document.getElementsByTagName('a');
jsiBox.progressImg.style.display = 'block'; // Показать индикатор загрузки
jsiBox.linkNodesArray = new Array();
// Пройдемся по всему списку ссылок для того чтобы найти элементы с заданным rel инаполнить "галлерею"
if (domNode.rel != '') {
for (var i = 0; i < docLinks.length; i++){
if (docLinks[i].rel == domNode.rel) {
jsiBox.linkNodesArray.push(docLinks[i]); // Добавим найденный элемент в массив {TODO} IE 5 do not have push
}
if (docLinks[i] == domNode) {
jsiBox.currentImgIndex = jsiBox.linkNodesArray.length - 1;
}
}
} else {
jsiBox.linkNodesArray.push(domNode);
jsiBox.currentImgIndex = 0;
}
jsiBox.infoNode.innerHTML = ' ';
jsiBox.titleNode.innerHTML = '';
// Сделать общий темный фон
var pagesize = getPageSizeWithScroll();
jsiBox.wrapNode.style.display = 'block';
jsiBox.wrapNode.style.height = pagesize[1] + 'px';
jsiBox.wrapNode.style.width = pagesize[0] + 'px';
// отобразить бокс с учетом прокрутки
var top = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
jsiBox.boxNode.style.top = (top + 200) + 'px';
jsiBox.mainImg.src = jsiBox.selfDir+'img/blank.gif';
jsiBox.wrapImgNode.style.height = '30px';
jsiBox.boxNode.style.width = '200px';
jsiBox.boxNode.style.display = 'block';
jsiBox.preloadImg.src = domNode.href; // Добавим изображение в очередь загрузки
//alert('thatsit');
return false;
}

// Вспомогательная ф-ция получения размера документа
function getPageSizeWithScroll()
{
if( window.innerHeight && window.scrollMaxY ) { // Firefox
pageWidth = document.body.clientWidth + window.scrollMaxX;
pageHeight = window.innerHeight + window.scrollMaxY;
} else if( document.body.scrollHeight > document.body.offsetHeight ) { // all but Explorer Mac
pageWidth = document.body.scrollWidth;
pageHeight = document.body.scrollHeight;
} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
pageWidth = document.body.offsetWidth + document.body.offsetLeft;
pageHeight = document.body.offsetHeight + document.body.offsetTop;
}
arrayPageSizeWithScroll = new Array(pageWidth, pageHeight);
return arrayPageSizeWithScroll;
}

// Инициализируем бокс
jsiBoxInit();
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
jahggler
jahggler
сообщение 6.5.2010, 21:27; Ответить: jahggler
Сообщение #2


               +'        <span style="width: 75px; float: right;  height: 37px; position:relative;">'
                  +'          <a href="#" id="nextJsiBoxLink" onclick="return jsiBoxNext();" style="position:absolute;top: 0;right: 0;line-height:30px;" class="jsiBtn">'+jsiBox.nextArrow+'</a>'
                  +'          <a href="#" id="prevJsiBoxLink" onclick="return jsiBoxPrev();" style="position:absolute;top: 0;left: 0;line-height:30px;" class="jsiBtn">'+jsiBox.prevArrow+'</a>'
                  +'        </span>'


вот смотри
заменяем <span> на <div style='text-align: center'>
а в <a> убираем все стили кроме line-height
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mfucker
mfucker
Topic Starter сообщение 6.5.2010, 23:22; Ответить: mfucker
Сообщение #3


(jahggler @ 7.5.2010, 00:27) *
               +'        <span style="width: 75px; float: right;  height: 37px; position:relative;">'
                  +'          <a href="#" id="nextJsiBoxLink" onclick="return jsiBoxNext();" style="position:absolute;top: 0;right: 0;line-height:30px;" class="jsiBtn">'+jsiBox.nextArrow+'</a>'
                  +'          <a href="#" id="prevJsiBoxLink" onclick="return jsiBoxPrev();" style="position:absolute;top: 0;left: 0;line-height:30px;" class="jsiBtn">'+jsiBox.prevArrow+'</a>'
                  +'        </span>'
вот смотри
заменяем <span> на <div style='text-align: center'>
а в <a> убираем все стили кроме line-height

спасибо за ответ, но:
если я удаляю весь спэн и добавляю <div style="text-align:center;">, а потом убираю все стили, кроме лайн-хайт-то див вообще смещается вправа((( а по центру выравнивается только комментарий внизу (тайтл)... 1-ое изображение-это то, как надо, 2-ое-то, как есть:)...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
jahggler
jahggler
сообщение 8.5.2010, 0:58; Ответить: jahggler
Сообщение #4


а понял... попробуй тогда этому диву добавить
float: left; width: 100%

и text-align: center всеравно пусть будет

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыВыравнивание картинки по центру между текстом
10 NikN 2632 6.1.2021, 23:24
автор: buypushplatform
Открытая тема (нет новых ответов) Выравнивание содержимого footer'a
0 press74 4988 2.7.2019, 18:58
автор: -iiwanc-
Открытая тема (нет новых ответов) Выровнить абсолютный блок по центру НЕИЗВЕСТНОГО размера без js
2 lensoy 5587 27.9.2015, 19:08
автор: -lensoy-
Открытая тема (нет новых ответов) Выравнивание по центру
5 Markelok 5317 24.8.2014, 15:28
автор: -Dima3456-
Открытая тема (нет новых ответов) Как вырaвнять таблицу и текст по центру экрана?
3 nhelp 4003 4.6.2014, 15:42
автор: -shmatkobrest-


 



RSS Текстовая версия Сейчас: 28.3.2024, 22:06
Дизайн