Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Выделение изображения (полностью или рамки) при переходе на страницу (https://javascript.ru/forum/dom-window/35009-vydelenie-izobrazheniya-polnostyu-ili-ramki-pri-perekhode-na-stranicu.html)

scpooch 28.01.2013 01:00

Выделение изображения (полностью или рамки) при переходе на страницу
 
Здравствуйте!
Я новичок в сайтостроении, потому прошу у гуру JavaScript'а помощи. С форума по Html меня перенаправили на JS.

Задача у меня такая - есть страничка с изображениями, каждое помечено закладкой. При переходе по линку типа www.mysite.net/home.html#zap1 я попадаю прямиком на нужное изображение. Подскажите, как сделать так, чтобы при данном переходе, целевая картинка выделялась (красная рамка вокруг картинки, например)? :-?

Deff 28.01.2013 01:21

scpooch,
Не нашел по ссылке нужный элемент(изо или ссылку) с name = zap1 или id = zap1

scpooch 28.01.2013 02:41

Это было в качестве примера.

Вот код примера:

<td>
<a href="http://www.mysite.net/zap1.html">
<div id="zap1"><img src="images/zap1.gif" width="200" height="200" border="0" alt=""></div></a>
</td>

Deff 28.01.2013 03:02

Тестовым скриптом перейдем по ссылке ...#zap1, затем через пару секунд по ссылке ...#zap2

Скрипт не нужен - выкидываем - только сss
<!DOCTYPE HTML>
<html>
<head>
<style>
a[href*="mysite.net"] div[id]:target > img{
  border:red solid 2px;
}
</style>
</head>
  <body>

<a  href="http://www.mysite.net/zap1.html" onclick="return false">
<div id="zap1"><img src="http://s3.uploads.ru/t/hPYlr.png" width="200" height="200" border="0" alt=""></div></a>

<a  href="http://www.mysite.net/zap1.html" onclick="return false">
<div id="zap2"><img src="http://s3.uploads.ru/t/hPYlr.png" width="200" height="200" border="0" alt=""></div></a>

  </body>
</html>


<!--Cкрипт для теста - на сайте не нужен! -->
<script type="text/javascript">
 setTimeout(" location.hash ='zap1' ",2000);
 setTimeout(" location.hash ='zap2' ",4000)
</script>

mysite.net - адрес домена используемых ссылок обрамления

scpooch 28.01.2013 03:21

Deff,
Попробовал с вашим кодом - ничего не изменилось. Выделение не работает. :(

Deff 28.01.2013 03:25

scpooch,
:) Какой браузер ? Должно работать во всех этих
http://s2.uploads.ru/NaOpr.png

Код пробуйте прямо в топике (Жмите посмотреть

Поправил - вставил картинки

scpooch 28.01.2013 03:29

Deff,
пробовал на свежих Firefox и Opera.

Deff 28.01.2013 03:32

Цитата:

Сообщение от scpooch
пробовал на свежих Firefox и Opera.

Опера => http://s2.uploads.ru/KB2D0.png
Firefox => http://s2.uploads.ru/DWLEi.png

Deff 28.01.2013 03:36

Спросите в Аське - кого-нидь еще(Пусть посмотрят пример

Этот код работает?
alert('Привет')

scpooch 28.01.2013 03:42

Deff,
Может быть, я накосячил при вставке кода?
Если изображения находятся по адресу www.mysite.net/gallery/home.html#zap1 - это влияет на адрес в a[href*="mysite.net"]? Я пример тогда упростил, вдруг из-за этого не работает?

Тут оба кода работают. У меня на сайте - нет..

Deff 28.01.2013 04:37

scpooch,
Я не вижу по ссылке www.mysite.net/gallery/home.html#zap1
элемента с id=zap1
Поэтому сказать ничего не могу

Deff 28.01.2013 04:40

И так же не вижу элементов со ссылками mysite.net

scpooch 28.01.2013 04:42

Deff,
Похоже, надо таки спать ложиться, уже не понимаю что пишу..

Первый линк на закладку был правильный, я ступил сейчас.
И коды ваши работают тут. У меня на сайте - не работают..

Так адреса - фиктивные, на реальный сайт я не давал - запрещено.

Deff 28.01.2013 04:45

Поставьте для теста, не изменяя прямо на сайт как есть

<style>
a[href*="mysite.net"] div[id]:target > img{
  border:red solid 2px;
}
</style>
<a  href="http://www.mysite.net/zap1.html" onclick="return false">
<div id="zap1"><img src="http://s3.uploads.ru/t/hPYlr.png" width="200" height="200" border="0" alt=""></div></a>

<a  href="http://www.mysite.net/zap1.html" onclick="return false">
<div id="zap2"><img src="http://s3.uploads.ru/t/hPYlr.png" width="200" height="200" border="0" alt=""></div></a>

scpooch 28.01.2013 04:46

Deff,
даже mysite.net на настоящий домен не менять?

Deff 28.01.2013 04:52

Ничо не меняйте = как есть

После теста выложите пару реальных ссылок - я поправлю сss код

scpooch 28.01.2013 04:59

Deff,
вставил как есть - ваши 2 картинки выделяются, мои - увы, хотя лишь название различается. Без реальных ссылок можно обойтись? Владелец сайта настаивает на конфиденциальности на время работ..
И еще - с картинок теперь нельзя перейти никуда, редирект перестал работать.

Deff 28.01.2013 06:00

scpooch,
Пишите в личку, у меня подобных ссылок мульён

scpooch 28.01.2013 15:13

Deff,
тут мне подсказали выбрать вариант со спрайтом, а не "много мелких картинок" - для ускоренной загрузки. Перепишу код сначала, потом отпишусь тут.
Спасибо за помощь!

Deff 28.01.2013 17:16

Цитата:

Сообщение от scpooch
тут мне подсказали выбрать вариант со спрайтом,

да - это удобно, если картинки не меняются - посколь создание каждый раз спрайта - дело хлопотное

scpooch 28.01.2013 17:20

Deff,
не меняются, а картинок будет очень много (на тысячи пойдет счет по примеркам). Теперь вот сижу и не врубаюсь, как сделать. Сам спрайт готов, код нужно настрочить теперь..

Deff 28.01.2013 17:25

scpooch,
Не делать все в один спрайт, а нарезать спрайты постранично, имя картинки совместить с расширением страницы

scpooch 28.01.2013 17:43

Deff,
я вас не понял.
У меня на странице, грубо говоря, квадрат (1000х1000). Он разбит, скажем, на 25 фрагментов (200х200). Изначально я его нарезал на эти 25 кусков в фотошопе и вставил на страницу тем же квадратом. Теперь пытаюсь без нарезки исходника разбить его на эти самые фрагменты (200х200) в CSS.

Deff 28.01.2013 18:16

scpooch,
я говорил о том, если объем полного спрайта более 700 кБ, её стоит
разбить на части, желательно привязанных к страницам использования,? если данное разделение возможно( можно привязать название файла к названию страницы, на которых будет использоваться данный спрайт)
=================================================
Для последующей вставки удобнее делать спрайт в одну строку, вытянутой в длину или ширину(конечно, если кол-во картинок не 1000)
Квадратом - сложно вычислять смещение
а так чисто ставите бекграундом

/* Тут спрайт вытянут по вертикали */
div[id*="zap"] {
  background-image:url("Ccылка на картинку")
}

#zap1 {
  background-position:50% 0;
}
#zap2 {
  background-position:50% 100px;
}
#zap2 {
  background-position:50% 200px;
}
#zap3 {
  background-position:50% 300px;
}
....//И т.д.

Возможно удобнее при много картинках ставить позицию бекграунда не через css, а скриптом...

т.е тогда в css остаётся
div[id*="zap1"],div[id*="zap2"],div[id*="zap3"] {
  background-image:url("Ccылка на картинку")
}
div[id*="zap4"],div[id*="zap5"],div[id*="zap6"]  {
  background-image:url("Ccылка на картинку")
}
(Это если спрайты по 30 картинок

scpooch 28.01.2013 18:19

Deff,
спрайт вышел 209 кб, я думаю это нормально. Сейчас протестирую..

Сначала вышла какая-то белиберда - позиции фрагментов перепутались и картинка в паззл превратилась. Подредактировал код и все встало на места (правда, так и не понял, почему косяк такой).

Код CSS
.awki {
        height:200px;
        width:200px;
        background:url(../images/a.jpg)
}

/* awki */
.awki.a1 {background-position:0px 0px;}
.awki.a2 {background-position:200px 0px;}
.awki.a3 {background-position:400px 0px;}
.awki.a4 {background-position:600px 0px;}
.awki.a5 {background-position:800px 0px;}
.awki.a6 {background-position:0px 200px;}
.awki.a7 {background-position:200px 200px;}
.awki.a8 {background-position:400px 200px;}
.awki.a9 {background-position:600px 200px;}
.awki.a10 {background-position:800px 200px;}
.awki.a11 {background-position:0px 400px;}
.awki.a12 {background-position:200px 400px;}
.awki.a13 {background-position:400px 400px;}
.awki.a14 {background-position:600px 400px;}
.awki.a15 {background-position:800px 400px;}
.awki.a16 {background-position:0px 600px;}
.awki.a17 {background-position:200px 600px;}
.awki.a18 {background-position:400px 600px;}
.awki.a19 {background-position:600px 600px;}
.awki.a20 {background-position:800px 600px;}
.awki.a21 {background-position:0px 800px;}
.awki.a22 {background-position:200px 800px;}
.awki.a23 {background-position:400px 800px;}
.awki.a24 {background-position:600px 800px;}
.awki.a25 {background-position:800px 800px;}


Вот часть кода, отвечающего за вывод фрагмента.
<td>
			<a href="www.mysite.net/gallery/a25.html"> /* здесь линк, куда ссылается фрагмент  */
				<div id="a25"><img src="images/blank.gif" class="awki a7" alt=""></a></td></div></a></td>


Возвращаемся к выделению фрагмента (бордером или чем еще можно) :)

Deff 28.01.2013 21:07

Чот Аввы - 200x200 , типично - 170х240

Вернусь поздно... так что терпите

scpooch 28.01.2013 21:09

Цитата:

Сообщение от Deff (Сообщение 230007)
Чот Аввы - 200x200 , типично - 170х240

Я вообще ничего не понял :no:

Deff 28.01.2013 21:31

scpooch,
Приеду - в час или два ночи по москве
Аватарки стандартных размеров 170х240

scpooch 28.01.2013 21:33

Deff,
там речи про аватарки не идет, идея другая. Буду ждать, пока попробую сам что-нибудь сделать. Удачной поездки!

scpooch 29.01.2013 18:35

Немного покопал код и стала работать версия:
<style>
   a25:target {
       visibility: hidden; 
   }
  </style>

<a href="http://mysite.net/next/a25.html">
<a25 id="a25"><img src="images/blank.gif" width="200" height="200" border="0" alt=""></a25></a>


Правда, то, что мне надо - border, либо не фурычит, либо криво встает.
Полагаю, это из-за того, что:

1) у самого фрагмента border="0", и все фрагменты стыкованы вплотную, образуя единую картинку
2) использован спрайт с 1х1px гифкой в основе

Что можно прописать

<style>
   a25:target {
       ??????????????;  /* [COLOR="Red"]СЮДА[/COLOR] */
   }
  </style>


, чтобы выделить фрагмент? При этом, желательно сохранить основу со спрайтом.


Часовой пояс GMT +3, время: 00:52.