水平鼠标滚动在Firefox中不起作用。

huangapple go评论109阅读模式
英文:

Horizontal mouse-scrolling not working in Firefox

问题

Horizontal mouse-scrolling not working in Firefox browsers.

This code works in Chrome, I mean you can use the mouse wheel to scroll the page horizontally.
But in Firefox, the mouse wheel is not scrolling with the mouse.

HTML+JS

  1. <section class="card" id="horizontal-scroller">
  2. <div class="card--content"></div>
  3. <div class="card--content"></div>
  4. <div class="card--content"></div>
  5. <div class="card--content"></div>
  6. <div class="card--content"></div>
  7. <div class="card--content"></div>
  8. <div class="card--content"></div>
  9. <div class="card--content"></div>
  10. <div class="card--content"></div>
  11. <div class="card--content"></div>
  12. </section>
  13. <script>
  14. document.getElementById("horizontal-scroller")
  15. .addEventListener('wheel', function(event) {
  16. if (event.deltaMode == event.DOM_DELTA_PIXEL) {
  17. var modifier = '1';
  18. // it's for Firefox, but don't work
  19. } else if (event.deltaMode == event.DOM_DELTA_LINE) {
  20. var modifier = parseInt(getComputedStyle(this).lineHeight);
  21. } else if (event.deltaMode == event.DOM_DELTA_PAGE) {
  22. var modifier = this.clientHeight;
  23. }
  24. if (event.deltaY != 0) {
  25. // change vertical scrolling to horizontal
  26. this.scrollLeft += modifier * event.deltaY;
  27. event.preventDefault();
  28. }
  29. });
  30. </script>

style.css

  1. html,
  2. body {
  3. width: 100%;
  4. height: 100%;
  5. }
  6. body {
  7. background-color: #8e44ad;
  8. margin: 0;
  9. display: flex;
  10. justify-content: center;
  11. align-items: center;
  12. }
  13. .card {
  14. background-color: #fff;
  15. min-width: 100%;
  16. min-height: 200px;
  17. display: flex;
  18. overflow-x: auto;
  19. }
  20. .card--content {
  21. background-color: #e74c3c;
  22. min-width: 200px;
  23. margin: 5px;
  24. }
  25. .card::-webkit-scrollbar {
  26. display: none;
  27. }

---------------------------------------------------Thanks in advance-------------------------------------------------------------------------------------------------------------------

英文:

Horizontal mouse-scrolling not working in Firefox browsers.

This code work in Chrome, I mean You can use the mouse wheel to scroll the page horizontally.
But in Firefox mouse wheel not scrolling with mouse.

HTML+JS

  1. <section class="card" id="horizontal-scroller">
  2. <div class="card--content"></div>
  3. <div class="card--content"></div>
  4. <div class="card--content"></div>
  5. <div class="card--content"></div>
  6. <div class="card--content"></div>
  7. <div class="card--content"></div>
  8. <div class="card--content"></div>
  9. <div class="card--content"></div>
  10. <div class="card--content"></div>
  11. <div class="card--content"></div>
  12. </section>
  13. <script>
  14. document.getElementById("horizontal-scroller")
  15. .addEventListener('wheel', function(event) {
  16. if (event.deltaMode == event.DOM_DELTA_PIXEL) {
  17. var modifier = '1';
  18. // it's for Firefox, but don't work
  19. } else if (event.deltaMode == event.DOM_DELTA_LINE) {
  20. var modifier = parseInt(getComputedStyle(this).lineHeight);
  21. } else if (event.deltaMode == event.DOM_DELTA_PAGE) {
  22. var modifier = this.clientHeight;
  23. }
  24. if (event.deltaY != 0) {
  25. // change vertical scrolling to gorizontal
  26. this.scrollLeft += modifier * event.deltaY;
  27. event.preventDefault();
  28. }
  29. });
  30. </script>

style.css

  1. html,
  2. body {
  3. width: 100%;
  4. height: 100%;
  5. }
  6. body {
  7. background-color: #8e44ad;
  8. margin: 0;
  9. display: flex;
  10. justify-content: center;
  11. align-items: center;
  12. }
  13. .card {
  14. background-color: #fff;
  15. min-width: 100%;
  16. min-height: 200px;
  17. display: flex;
  18. overflow-x: auto;
  19. }
  20. .card--content {
  21. background-color: #e74c3c;
  22. min-width: 200px;
  23. margin: 5px;
  24. }
  25. .card::-webkit-scrollbar {
  26. display: none;
  27. }

---------------------------------------------------Thanks in advance-------------------------------------------------------------------------------------------------------------------

答案1

得分: 0

这个调用 getComputedStyle(this).lineHeight 返回 normal 作为返回值。这就是为什么调用 modifier = parseInt(getComputedStyle(this).lineHeight); 会将 NaN 设置为修改器属性的值。我已经添加了一些检查:

  1. document.getElementById("horizontal-scroller").addEventListener('wheel', function(event) {
  2. var modifier = 1;
  3. if (event.deltaMode == event.DOM_DELTA_PIXEL) {
  4. modifier = 1;
  5. }
  6. else if (event.deltaMode == event.DOM_DELTA_LINE) {
  7. modifier = parseInt(getComputedStyle(this).lineHeight);
  8. }
  9. else if (event.deltaMode == event.DOM_DELTA_PAGE) {
  10. modifier = this.clientHeight;
  11. }
  12. if(isNaN(modifier)) {
  13. modifier = 1;
  14. }
  15. if (event.deltaY != 0) {
  16. this.scrollLeft += modifier * event.deltaY;
  17. event.preventDefault();
  18. }
  19. });
  1. html,
  2. body {
  3. width: 100%;
  4. height: 100%;
  5. }
  6. body {
  7. background-color: #8e44ad;
  8. margin: 0;
  9. display: flex;
  10. justify-content: center;
  11. align-items: center;
  12. }
  13. .card {
  14. background-color: #fff;
  15. min-width: 100%;
  16. min-height: 200px;
  17. display: flex;
  18. overflow-x: auto;
  19. }
  20. .card--content {
  21. background-color: #e74c3c;
  22. min-width: 200px;
  23. margin: 5px;
  24. }
  25. .card::-webkit-scrollbar {
  26. display: none;
  27. }
  1. <section class="card" id="horizontal-scroller">
  2. <div class="card--content"></div>
  3. <div class="card--content"></div>
  4. <div class="card--content"></div>
  5. <div class="card--content"></div>
  6. <div class="card--content"></div>
  7. <div class="card--content"></div>
  8. <div class="card--content"></div>
  9. <div class="card--content"></div>
  10. <div class="card--content"></div>
  11. <div class="card--content"></div>
  12. </section>
英文:

This call getComputedStyle(this).lineHeight gaves you normal as the return value. That is why calling this modifier = parseInt(getComputedStyle(this).lineHeight); sets NaN as the value of the modifier attribute. I've added some check for that:

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

  1. document.getElementById(&quot;horizontal-scroller&quot;).addEventListener(&#39;wheel&#39;, function(event) {
  2. var modifier = 1;
  3. if (event.deltaMode == event.DOM_DELTA_PIXEL) {
  4. modifier = 1;
  5. }
  6. else if (event.deltaMode == event.DOM_DELTA_LINE) {
  7. modifier = parseInt(getComputedStyle(this).lineHeight);
  8. }
  9. else if (event.deltaMode == event.DOM_DELTA_PAGE) {
  10. modifier = this.clientHeight;
  11. }
  12. if(isNaN(modifier)) {
  13. modifier = 1;
  14. }
  15. if (event.deltaY != 0) {
  16. this.scrollLeft += modifier * event.deltaY;
  17. event.preventDefault();
  18. }
  19. });

<!-- language: lang-css -->

  1. html,
  2. body {
  3. width: 100%;
  4. height: 100%;
  5. }
  6. body {
  7. background-color: #8e44ad;
  8. margin: 0;
  9. display: flex;
  10. justify-content: center;
  11. align-items: center;
  12. }
  13. .card {
  14. background-color: #fff;
  15. min-width: 100%;
  16. min-height: 200px;
  17. display: flex;
  18. overflow-x: auto;
  19. }
  20. .card--content {
  21. background-color: #e74c3c;
  22. min-width: 200px;
  23. margin: 5px;
  24. }
  25. .card::-webkit-scrollbar {
  26. display: none;
  27. }

<!-- language: lang-html -->

  1. &lt;section class=&quot;card&quot; id=&quot;horizontal-scroller&quot;&gt;
  2. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  3. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  4. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  5. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  6. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  7. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  8. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  9. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  10. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  11. &lt;div class=&quot;card--content&quot;&gt;&lt;/div&gt;
  12. &lt;/section&gt;

<!-- end snippet -->

huangapple
  • 本文由 发表于 2023年7月6日 18:37:26
  • 转载请务必保留本文链接:https://go.coder-hub.com/76627945.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定