国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

什么?CSS 能實現鼠標滾輪的橫向滾動?

這篇具有很好參考價值的文章主要介紹了什么?CSS 能實現鼠標滾輪的橫向滾動?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

再次考驗你的css功底,這樣的橫向平滑滾動效果,只用css就可以實現,想不想來挑戰(zhàn)一下?

css 橫向滾動,css,計算機外設,javascript

看到這個效果同學們腦子里第一個想到的是什么?監(jiān)聽鼠標的滾輪事件嗎?其實也可以實現但是非常的麻煩,因為要做到平滑滾動的話,還要去算這個事件的觸發(fā)頻率以及滾動的距離。

css 橫向滾動,css,計算機外設,javascript

我是渡一子辰老師,今天給大家介紹的是純CSS 實現橫向滾動的原理和步驟,通過具體的代碼示例和深入的技術分析,讓你的技術更上一層樓!

思考

要實現這個效果其實很簡單,只需要換個角度看問題就行了。

我們都知道鼠標滾輪可以控制的是豎向的滾動條,那如果我們把顯示器旋轉 90 度呢?比如下圖這樣:

css 橫向滾動,css,計算機外設,javascript

這樣豎的滾動條是不是就變成橫的了,而且鼠標依然可以控制它。怎么樣?是不是很有趣。

雖然旋轉顯示器是在搞笑,但是這個思維的轉換其實就是這個效果實現的切入點,我們可以用 css 來旋轉元素,達到同樣的效果。

我們今天將這個效果做成一個 vue 的通用組件,組件的名字就叫做 XScroll 吧。先看一下 XScroll 組件的嵌套結構,為什么這樣嵌套看接下來的圖例你就明白了。

<template>
  <div class="container">
    <div class="scroll">
      <div class="content">
        <slot></slot>
      </div>
    </div>
  </div>
</template>

css 橫向滾動,css,計算機外設,javascript

如上圖所示,通過之前的思考我們知道換個角度看就可以實現效果,那么我們用代碼把想法實現出來就好了。

通過圖 我們知道,scroll 其實是豎著的,這樣 scroll 的滾動條我們才可以通過鼠標滾輪控制,然后我們通過 css 將 scroll 旋轉成圖 的樣子,這樣 scroll 的豎向滾動條就變成了橫向的,我們依然可以通過鼠標滾輪來控制。

因為 container 是我們的最外圍的容器,而 scroll 與 container 是一樣大的,但是我們要知道 scroll 最開始是豎著的。也就說,scroll 的寬等于 container 的高,scroll 的高等于 container 的寬。

好了,思路到這里我們已經清楚了,接下來就是用代碼把想法實現出來。

實現

首先我們知道 scroll 的大小是根據 container 的大小來的,所以我們必須知道 container 的大小,這里我們通過之前寫過的一個 Vue 指令來獲取 container 的大小,并且指令可以在 dom 元素的大小改變時獲取最新的尺寸,指令的代碼放在最后。

<template>
  <!-- v-size-ob 指令,可以在 dom 元素改變大小時獲取 dom 元素的尺寸,并且返回尺寸 -->
  <div v-size-ob="handleChange" class="container">
    <div class="scroll">
      <div class="content">
        <slot></slot>
      </div>
    </div>
  </div>
</template>

<script setup>
import { reactive } from 'vue';
const s = reactive({ // 聲明一個響應式數據存儲一下
  w: 0,
  h: 0,
});
function handleChange(size) { // 通過 v-size-ob 指令的返回值獲取 container 的大小
  s.w = size.width;
  s.h = size.height;
}
</script>

<style scoped>
/* 為每一個盒子加上邊框方便查看效果 */
.container {
  outline: 5px solid #ec7270;
  width: 100%;
  height: 100%;
}
.scroll {
  outline: 5px solid #7985ec;
  /* 通過 vue3 的 v-bind 在 style 中獲取值 */
  /* 因為寬高是有單位的,所以利用 calc 乘以 1px 給寬高加上單位 */
  /* scroll 寬等于 container 的高  */
  width: calc(v-bind("s.h") * 1px);
  /* scroll 高等于 container 的寬  */
  height: calc(v-bind("s.w") * 1px);
}
.content {
  outline: 5px solid #f1ac6a;
  height: calc(v-bind("s.h") * 1px);
}
</style>

css 橫向滾動,css,計算機外設,javascript

通過以上代碼我們可以的到上圖中的效果,那么下一步我們就要旋轉一下 content,使其放置于 scroll 中,并且 scroll 要出現滾動條。

css 橫向滾動,css,計算機外設,javascript

.scroll {
  outline: 5px solid #7985ec;
  width: calc(v-bind("s.h") * 1px);
  height: calc(v-bind("s.w") * 1px);
  position: relative;
  overflow: auto;
}
.content {
  outline: 5px solid #f1ac6a;
  height: calc(v-bind("s.h") * 1px);
  position: absolute;
  left: 100%;
  transform-origin: 0 0;
  transform: rotate(90deg);
}

現在我們得到了這樣的效果。

css 橫向滾動,css,計算機外設,javascript

可以說現在我們已經實現了,就差最后一步了,我們將 content 旋轉到 container 里就大功告成了。

按照慣例請看圖。

css 橫向滾動,css,計算機外設,javascript

.scroll {
  outline: 5px solid #7985ec;
  width: calc(v-bind("s.h") * 1px);
  height: calc(v-bind("s.w") * 1px);
  position: relative;
  overflow: auto;
  transform-origin: 0 0;
  transform: translateY(calc(v-bind("s.h") * 1px)) rotate(-90deg);
}

css 橫向滾動,css,計算機外設,javascript

最后我們隱藏滾動條去除邊框就得到了我們所需要的效果啦!

自定義指令代碼

const map = new WeakMap();
const ob = new ResizeObserver((entries) => {
  for (const entry of entries) {
    const handler = map.get(entry.target);
    if (handler) {
      const box = entry.borderBoxSize[0];
      handler({
        width: box.inlineSize,
        height: box.blockSize,
      });
    }
  }
});

export default {
  mounted(el, binding) {
    ob.observe(el);
    map.set(el, binding.value);
  },
  unmounted(el) {
    ob.unobserve(el);
  },
};

總結

整個實現過程非常巧妙地使用了 css,讓我們感受到了 css 的強大和靈活。

當然這只是一個非常小的知識點,因為 CSS 是我們永遠學不會的語音啊。

如果你有什么問題或建議,請在評論區(qū)留言,如果你覺得這篇文章有用,請點贊收藏或分享給你的朋友!文章來源地址http://www.zghlxwxcb.cn/news/detail-663914.html

到了這里,關于什么?CSS 能實現鼠標滾輪的橫向滾動?的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • css 實現文字橫向循環(huán)滾動

    css 實現文字橫向循環(huán)滾動

    ## 直接上代碼,html部分

    2024年02月12日
    瀏覽(25)
  • 用純HTML,JS,CSS實現橫向滾動標簽頁

    用純HTML,JS,CSS實現橫向滾動標簽頁

    前不久,在我的一個項目中,需要展示一個橫向滾動的標簽頁,它支持鼠標橫向拖動和點擊切換。在實現的過程中,我發(fā)現這個小功能需要同時用到前端的三輛馬車,但是實現難度不高,而且最終效果還不錯,是個難得的初學者項目,于是萌生了寫這篇文章的想法,希望對初

    2024年02月08日
    瀏覽(41)
  • js實現鼠標滾輪放大縮小頁面指定區(qū)域(css3 scale)

    js實現鼠標滾輪放大縮小頁面指定區(qū)域(css3 scale)

    一、需求 鼠標滾輪在紅色邊框區(qū)域內向上滾動:綠色邊框盒子里所有元素縮小。 鼠標滾輪在紅色邊框區(qū)域內向下滾動:綠色邊框盒子里所有元素放大。 點擊還原按鈕:綠色盒子里所有元素還原為初始值。 二、相關知識點 1、CSS3 Transform屬性應用于元素的2D或3D轉換。這個屬性允許

    2024年02月11日
    瀏覽(98)
  • css:橫向滾動布局

    css:橫向滾動布局

    2024年02月16日
    瀏覽(22)
  • css3實現無縫滾動,鼠標經過暫停

    js也可以實現,但css3更加的平滑和資源占用更少。下面是具體代碼,動畫要單獨用一個類名,否則暫停估計不會生效: 原理:動畫向上移動,目標完全消失后,從頭開始,注意 動畫移動高度是文本高度,這個不好控制要微調,如果文本是動態(tài)的則要把動畫通過js生成動態(tài)設置

    2024年02月22日
    瀏覽(28)
  • css實現滾動(從下往上),鼠標進入時懸停

    大屏有時候會追求css實現滾動(從下往上),鼠標進入時懸停的效果 方法一:用純css 代碼如下,html部分 樣式部分 方法二,使用marquee(文字滾動)標簽 各個屬性參數 direction 表示滾動的方向,值可以是left,right,up,down,默認為left behavior 表示滾動的方式,值可以是scroll(連續(xù)滾動)sli

    2024年02月08日
    瀏覽(25)
  • canvas實現鼠標滾輪滾動縮放畫布

    canvas實現鼠標滾輪滾動縮放畫布效果

    2024年02月04日
    瀏覽(100)
  • 2022-11 CSS:flex布局父子寬度問題-小程序scrollView-div橫向滾動字體超出隱藏-居中

    2022-11 CSS:flex布局父子寬度問題-小程序scrollView-div橫向滾動字體超出隱藏-居中

    如上圖第二行子元素寬度會跟隨第一行寬度 解決方案: 對第二行設置: width: max-content; 使其寬度跟隨自身內容 如上圖,左側寬高為112rpx,寬度不生效 解決方案: 對左側圖片設置寬高的同時, 設置最小寬高 效果如下: 例1:

    2024年02月09日
    瀏覽(36)
  • IDEA中,光標移動快捷鍵(Shift + 滾輪前后滾動:當前文件的橫向滾動軸滾動。)

    IDEA中,光標移動快捷鍵(Shift + 滾輪前后滾動:當前文件的橫向滾動軸滾動。)

    除此之外,其他常用的光標移動快捷鍵包括: Shift + 滾輪前后滾動:當前文件的橫向滾動軸滾動 。 Shift+enter:快速將鼠標移動到下一行。 Ctrl + ]:移動光標到當前所在代碼的花括號結束位置。 Ctrl + 左方向鍵:光標跳轉到當前單詞/中文句的左側開頭位置。 Ctrl + 右方向鍵:光

    2024年02月04日
    瀏覽(30)
  • css滾動條變細且隱藏,鼠標移入顯示

    全局修改滾動條的樣式,讓滾動條變細且隱藏,只有鼠標移入到所屬區(qū)域時才顯示。 滾動條可設置的元素: 元素后面還可以跟一些事件:

    2024年01月19日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包