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

HTML+CSS+JavaScript

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

 

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

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

тема: Как отцентровать картинку.
 
 автор: Feniks2008   (12.06.2008 в 12:41)   письмо автору
 
 

У меня проблема. Есть фотоальбом http://iisus-hristos.com/albom_andrej/index.html
Всё работает. Но вот когда нажимаешь на картинку появлется большая. Она появляться то появляется но смещается в окне вниз и вправо. Размер задан точно. Как сделать чтобы она встала именно по центру. Там сейчас вот такое описание стоит для каждой.
<img src="46.jpg" width="202" height="120" style="cursor:hand;" onclick="window.open('46b.jpg','','width=969,height=600');return false;"/>

   
 
 автор: DEM   (12.06.2008 в 12:44)   письмо автору
 
   для: Feniks2008   (12.06.2008 в 12:41)
 

<table>
<tr align=center><td>
<img src="46.jpg" width="202" height="120" style="cursor:hand;" onclick="window.open('46b.jpg','','width=969,height=600');return false;"/>
</td></tr>
</table>

   
 
 автор: elenaki   (12.06.2008 в 12:51)   письмо автору
 
   для: DEM   (12.06.2008 в 12:44)
 

<tr align=center> - что за бред!
в тэге img пишем:
onClick="return imgWin2('46b.jpg')" target=_new style="cursor: pointer;"


и размещаем это в коде страницы:

<script>
function imgWin2(img)
{
var wn=window.open('photos/view_picture.php?'+escape(img),'win','resizable,width=400,height=200,screenX=0,screenY=0,top=100,left=100')
wn.focus()
return false
}
</script>



а вот файл view_picture, его можно и html и php сделать:
<style type=text/css><!--
body,img,table,tr,td{margin:0px;padding:0px;border:0px;text-align:center;vertical-align:middle}
--></style>
<meta http-equiv=Content-Type content="text/html; charset=windows-1253">
<body onLoad="if(d.images['i'])adjustWin()" leftmargin=100 topmargin=100 marginwidth=100 marginheight=100>
<table width=100% height=100% cellpadding=0 cellspacing=0 border=0>
<tr><td><script>
var d=document
resizeTo(400,300)
function adjustWin(){resizeTo(d.images['i'].width+30,d.images['i'].height+50)}

var l=location.search
if(l.length>1){
var imgPath=unescape(location.search.substring(1,location.search.length));
var im=new Image
im.src=imgPath
d.write('<img name=i src="'+imgPath+'">')
}
else {d.write('No picture')}
</script></td></tr></table>

   
 
 автор: sim5   (12.06.2008 в 13:40)   письмо автору
 
   для: elenaki   (12.06.2008 в 12:51)
 

elenaki вы опять свой греческий подсовываете, его опять добросовестно скопируют, и опять не будут понимать, откуда... )
Можно просто (текущее разрешение - размер изображения) / 2.

   
 
 автор: elenaki   (12.06.2008 в 13:52)   письмо автору
 
   для: sim5   (12.06.2008 в 13:40)
 

там еще есть отступы для шапки и границ окна. а насчет греческого - пусть думают, прежде,
чем тупо копировать. a если текста в окне не будет, то и кодировка моя не повредит :).

   
 
 автор: sim5   (12.06.2008 в 14:19)   письмо автору
 
   для: elenaki   (12.06.2008 в 13:52)
 

Да, а про почту читали? Зачем греческий вирус по форуму разбрасывать?))
Ну и что, что отступы, я о центрировании нового окна.

   
 
 автор: Feniks2008   (12.06.2008 в 21:49)   письмо автору
 
   для: sim5   (12.06.2008 в 14:19)
 

народ, как же всётаки сделать. Попроще бы. А то я совсем закопалась. Текста там нет. Просто картинка и всё.
:))

   
 
 автор: sim5   (13.06.2008 в 07:12)   письмо автору
 
   для: Feniks2008   (12.06.2008 в 21:49)
 

А чем вам код elenaki не нравится? Да и зачем изображение центрировать в окне. Если сделать так (в коде открываемого окна):

function adjustWin(){resizeTo(d.images['i'].width,d.images['i'].height)}

<style type=text/css>
body,img {margin:0px;padding:0px;border:0px;} 
</style>

<body onLoad="if(d.images['i'])adjustWin()">

И убрать из кода таблицу, то рамер окна будет равен размеру изображения.

   
 
 автор: PAT   (13.06.2008 в 13:40)   письмо автору
 
   для: Feniks2008   (12.06.2008 в 21:49)
 

Дело не в наличии/отсутствии текста.
Дело в другом. Разъясняю.

Чтобы отцентровать новое окно, необходимо знать 4 (четыре) точных размера:
1. высоту экрана монитора в пикселях ECRAN_H
2. ширину экрана монитора в пикселях ECRAN_W
3. высоту окна в пикселях OKNO_H
4. ширину окна в пикселях OKNO_W

Зная все эти четыре значения, вы четко сможете рассчитать координаты верхнего левого угла нового окна:
По высоте = (ECRAN_H - OKNO_H) / 2
По ширине = (ECRAN_W - OKNO_W) / 2

Высоту и ширину экрана монитора - ECRAN_H и ECRAN_W - узнать вы сможете легко:
ECRAN_W = screen.availWidth;
ECRAN_H = screen.availHeight;

А вот с точными размерами окна надо немного помучаться.
Там две (вполне решаемые) проблемы:
а) всякий браузер имеет предустановленные ВНУТРЕННИЕ отступы в окне (padding и margin). И эти отступы в разных браузерах различны. И их надо УЗНАТЬ.
б) всякий браузер имеет разную ширину ВНЕШНИХ БОРДЕРОВ (особливо ВЕРХНИЙ и НИЖНИЙ - у каждого пользователя сверху и снизу может быть всё, что ему хочется - всякие разные панели браузера, строка состояния...). И величину всех этих бордеров браузера тоже надо УЗНАТЬ.

Для этого надо один раз открыть НОВОЕ окно со специальным JScript'ом, который все эти размеры быстренько определит.

Для вашего случая могу предложить, например, следующий вариант: когда пользователь заходит на страницу, ему открывают окно, в котором написано: "Для просмотра фотографий в реальном размере кликните по маленькой фотографии" ну и ещё помещена будет кнопка "Закрыть окно".
Как только это предварительное окошко откроется, ваша страница будет иметь все данные для того, чтобы потом чётко отцентровывать все открывающиеся окна, исходя из реальных размеров помещенных в них фотографий.

Если этот вариант вас устроит - "свистните", напишу код.

PS. Возможен и ещё один вариант - никакого предварительного окошка не делать, самое первое окно с большой фотографией откроется в виде "как получится", а вот все последующие уже будут четко отцентрованы (и внутри окна, и само окно относительно экрана монитора).

   
Rambler's Top100
вверх

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