Задать вопрос

Как сделать, чтобы при переходе по ссылке открывалось определенное положение страницы?

Здравствуйте.
Помогите пожалуйста сделать так, чтоб при переходе по ссылке открывалось нужное положение страницы (желательно без якорей).
Заранее большое спасибо.
  • Вопрос задан
  • 10911 просмотров
Подписаться 3 Оценить 6 комментариев
Решения вопроса 3
Ну если без якорей, то можно на js сделать

jQuery(document).ready(function(){
var destination = jQuery(elem).offset().top;
jQuery("html,body").animate({scrollTop: destination}, speed);
});

Пишу по памяти, простите за возможные косяки, но принцип такой.
Ответ написан
LaBeuof
@LaBeuof
web-developer
есть крутой плагин

$("a[href*='#']").mPageScroll2id();

вроде того что предложили выше
Ответ написан
DIITHiTech
@DIITHiTech
Fullstack javascript developer
можно:
- использовать native механизмы якорей
- использовать якори для передачи координат или селектора на страницу с последующим разбором скриптом и прокруткой
- кукистные костыли

выберем второй:
Скрипт может парсить переменный x/y или scrollTo=selector и прокручивает страницу

также позволяет делать тоже самое в пределах одной страницы, и как бонус парсит переменные с hash

<a href="#x=123&y=100">Scroll to  x/y</a>
     <a href="#scrollTo=#scrollID">ScrollTo element selector (id)</a>
     <a href="#scrollTo=.class">ScrollTo element selector (class)</a>
    <a href="path/to/page.php#scrollTo=.class">ScrollTo element selector (class)</a>


function decodeScrollPos(hide) {
             var params = {}, el, loc = window.location, hash = loc.hash.substr(1);

             hide && (loc.hash = "");

             hash.split('&').forEach(function (raw) {
                 var data = raw.split('=');
                 data[0] && (params[data[0]] = data[1] || "");
             })
             setTimeout(function () {
                 if (params.x || params.y) {
                     console.log('scroll=', hash);
                     window.scrollTo(params.x, params.y);
                 } else if (params.scrollTo) {
                     (el = document.querySelector(params.scrollTo)) && el.scrollIntoView && el.scrollIntoView(true);
                 }
             }, 100);
             return params;
         }


         window.onhashchange = function () {
             decodeScrollPos(true);
         }

         console.log(decodeScrollPos(true));


Если хотите не показывать hash в адресе после перехода после скроллинга можно его обнулить ..но зачем
window.location.hash="";
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ram_prv
Вопрос конесно скользкий. Все тут знатоки javascript.
ф как быть в ситуации когда идет отбор с прпименением izotop, а привыводе формируется новая страница?
<?php if ($categories && param('useGalleryGategory', 0)) : ?>
	<ul id="catalog_categories" class="our_project_filter">
		<li  data-filter="*"><a href="/gallery">All</a></li>
		<?php foreach ($categories as $key => $item) :?>
		
			<li class="segment-<?php echo $item->id; ?>">
				<a href="<?php echo GalleryCategory::getCatIdUrl($item->id, $item->title); ?>"><?php echo $item->title; ?></a>
			</li>
		<?php endforeach; ?>
	</ul>
<?php endif; ?>

это код кнопок.
Это то что мы должны получить :
<?php if($gallery) : ?>
 
	 <?php foreach ($gallery as $item) : ?>
                    <div class="segment-<?php echo $item->id_category;?> col-md-4">
                       
                            <ul>
								
								<li><?php if ($item->img):?>
					<a href="<?php echo Yii::app()->request->baseUrl.'/'.Gallery::UPLOAD_DIR.'/'.Gallery::GALLERY_DIR.'/'.Gallery::ORIGINAL_IMG_DIR.'/'.$item->img; ?>" >
				<?php else: ?>
					<a href="<?php echo Gallery::returnEmptyImgUrl(param('maxWidthBigThumb', 800), param('maxHeightBigThumb', 600));?>">
				<?php endif; ?>

					<?php
					if ($item->img):
						echo CHtml::image(Yii::app()->getBaseUrl().'/'.Gallery::UPLOAD_DIR.'/'.Gallery::GALLERY_DIR.'/'.Gallery::MODIFIED_IMG_DIR.'/'.$item->getThumb(param('maxWidthMediumThumb', 400), param('maxHeightMediumThumb', 300)));
					else:
						echo CHtml::image(Gallery::returnEmptyImgUrl(param('maxWidthMediumThumb', 436), param('maxHeightMediumThumb', 273)));
					endif;
					?>
						</li>
						</ul>
								</div>
							
							
					

<?php endforeach;?>
<?php else: ?>
	<div><?php echo tc('Нет изображений в галерее');?></div>
<?php endif; ?>

<?php if($pages) : ?>
	<?php $this->widget('itemPaginator',array('pages' => $pages, 'header' => '')); ?>
	<div class="clearfix"></div>
<?php endif;?>

Все работае, но при переходе мы возращаемся в начало строки, тоесть к тегу<html>. Как вернуть перход к кнопкам
<ul id="catalog_categories" class="our_project_filter">
?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы