質問するログイン新規登録

質問編集履歴

2

コードの修正

2019/07/03 03:08

投稿

goligo
goligo

スコア16

title CHANGED
File without changes
body CHANGED
@@ -92,7 +92,6 @@
92
92
  var func = function(){
93
93
  $(window).on('load', function() {
94
94
  $(window).scrollTop($('body').offset().top);
95
- $('html,body').animate({ scrollTop: 0 }, 0);
96
95
 
97
96
  return $defer.resolve();
98
97
  });

1

自己解決しました

2019/07/03 03:08

投稿

goligo
goligo

スコア16

title CHANGED
File without changes
body CHANGED
@@ -60,4 +60,57 @@
60
60
  ### 補足情報(FW/ツールのバージョンなど)
61
61
 
62
62
  jqueryのver1.11.1を読み込んで使用しています。
63
- chrome、firefoxで確認しましたが、両方とも動きませんでした。
63
+ chrome、firefoxで確認しましたが、両方とも動きませんでした。
64
+
65
+
66
+ ### 自己解決しました
67
+
68
+ .whenと.doneを使う場合、.Deferredと.resolveが必要とのことなので以下のように加えると望んだ動作をするようになりました。
69
+
70
+ ```
71
+
72
+ var $defer = new $.Deferred();
73
+
74
+ $.when(
75
+ $defer
76
+ ).done(function(){
77
+ var target = $('.top-ttl');
78
+
79
+ var top = target.offset().top, //y座標の初期値を取得
80
+ targetH = target.height(),
81
+ pos = top + targetH / 2 - 40;
82
+ target.css({top: pos + "px"});
83
+
84
+ $(window).scroll(function() {
85
+ var value = $(this).scrollTop(); //スクロール値を取得
86
+ target.css('top', pos + value / -2 ); //スクロールを遅くする
87
+ });
88
+
89
+ });
90
+
91
+
92
+ var func = function(){
93
+ $(window).on('load', function() {
94
+ $(window).scrollTop($('body').offset().top);
95
+ $('html,body').animate({ scrollTop: 0 }, 0);
96
+
97
+ return $defer.resolve();
98
+ });
99
+
100
+ return $defer.promise();
101
+ };
102
+
103
+
104
+ $(function() {
105
+ var target = $('.top-ttl'),
106
+ target02 = $('#slideMenu-box');
107
+ if ( target.length && target02.is(":hidden")) {//top-menuがあるときに処理
108
+ func();
109
+ }else if ( target.length && target02.is(":visible")) {
110
+ target.css('position', 'absolute' );
111
+ }
112
+
113
+ });
114
+
115
+
116
+ ```