站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        巧用純CSS實現(xiàn)鼠標點擊拖拽效果,讓交互更加生動!

        本篇文章給大家介紹一下如何使用純CSS實現(xiàn)鼠標點擊拖拽效果,讓交互更加生動,希望對大家有所幫助!

        巧用純CSS實現(xiàn)鼠標點擊拖拽效果,讓交互更加生動!

        前端(vue)入門到精通課程:進入學習
        Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點擊使用

        背景

        鼠標拖拽元素移動,算是一個稍微有點點復雜的交互。

        而在本文,我們就將打破常規(guī),向大家介紹一種超強的僅僅使用純 CSS 就能夠?qū)崿F(xiàn)的鼠標點擊拖拽效果。【推薦學習:css視頻教程】

        在之前的這篇文章中 — 不可思議的純 CSS 實現(xiàn)鼠標跟隨,我們介紹了非常多有意思的純 CSS 的鼠標跟隨效果,像是這樣:

        巧用純CSS實現(xiàn)鼠標點擊拖拽效果,讓交互更加生動!

        但是,可以看到,上面的效果中,元素的移動不是很絲滑。如果你了解上述的實現(xiàn)方式,就會知道它存在比較大的局限性。

        本文,我們還是僅僅通過 CSS,來實現(xiàn)一種絲滑的鼠標點擊拖動元素移動的效果。

        鼠標點擊拖拽跟隨效果

        OK,什么意思呢?我們先來看一個最最簡單的效果示意圖,實現(xiàn)點擊一個元素,能夠拖動元素進行移動的效果:

        巧用純CSS實現(xiàn)鼠標點擊拖拽效果,讓交互更加生動!

        好的,到這里,在繼續(xù)往下閱讀之前,你可以停一停。這種效果,正常而言,都是必須要借助 JavaScript 才能夠?qū)崿F(xiàn)的。從表現(xiàn)上來看:

        • 首先拖拽元素過程,可以任意將元素進行移動

        • 然后放置元素,讓元素停留在另外一個地方

        思考一下,如果不借助 JavaScript 的話,有辦法將元素小球從 A 點移動到 B 點么?這個效果完全就不像是純 CSS 能夠完成的。

        答案必然是可以的!整個過程也非常之巧妙,這里我們核心需要利用強大的 resize 屬性。以及,配合通過構建一種巧妙的布局,去解決可能會遇到的各種難題。

        使用 resize,構建可拖拽改變大小的元素

        首先,我們利用 resize 屬性來實現(xiàn)一個可改變大小的元素。

        什么是 resize 呢?根據(jù) MDN — resize:該 CSS 屬性允許你控制一個元素的可調(diào)整大小性。

        其 CSS 語法如下所示:

        { /* Keyword values */   resize: none;   resize: both;   resize: horizontal;   resize: vertical;   resize: block;   resize: inline; }
        登錄后復制

        簡單解釋一下:

        • resize: none:元素不能被用戶縮放
        • resize: both:允許用戶在水平和垂直方向上調(diào)整元素的大小
        • resize: horizontal:允許用戶在水平方向上調(diào)整元素的大小
        • resize: vertical:允許用戶在垂直方向上調(diào)整元素的大小
        • resize: block:根據(jù)書寫模式(writing-mode)和方向值(direction),元素顯示允許用戶在塊方向上(block)水平或垂直調(diào)整元素大小的機制。
        • resize: inline:根據(jù)書寫模式(writing-mode)和方向值(direction),元素顯示一種機制,允許用戶在內(nèi)聯(lián)方向上(inline)水平方向或垂直方向調(diào)整元素的大小。

        看一個最簡單的 DEMO:

        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. A aut qui labore rerum placeat similique hic consequatur tempore doloribus aliquid alias, nobis voluptates. Perferendis, voluptate placeat esse soluta deleniti id!</p>
        登錄后復制

        p {     width: 200px;     height: 200px;     resize: horizontal;     overflow: scroll; }
        登錄后復制

        這里,我們設置了一個長寬為 200px<p> 為橫向可拖拽改變寬度。效果如下:

        巧用純CSS實現(xiàn)鼠標點擊拖拽效果,讓交互更加生動!

        簡單總結(jié)一些小技巧:

        • resize 的生效,需要配合 overflow: scroll,當然,準確的說法是,overflow 不是 visible,或者可以直接作用于替換元素譬如圖像、<video><iframe><textarea>
        • 我們可以通過 resizehorizontalverticalboth 來設置橫向拖動、縱向拖動、橫向縱向皆可拖動。
        • 可以配合容器的 max-widthmin-widthmax-heightmin-height 限制可拖拽改變的一個范圍

        這里,如果你的對 resize 還有所疑惑,或者想了解

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 成人区人妻精品一区二区不卡视频| 久久久久四虎国产精品| 久久福利青草精品资源站免费| 日本精品自产拍在线观看中文| 亚洲视频精品在线| 成人午夜视频精品一区| 久久久国产精品亚洲一区| 亚洲欧美日韩国产精品| 精品无码久久久久久久动漫| 94久久国产乱子伦精品免费| 成人国内精品久久久久影院| 日韩人妻精品无码一区二区三区| 久久久久久久久久免免费精品| 国产精品免费久久久久电影网| 亚洲日本精品一区二区| 久久亚洲精品视频| 国产亚洲美女精品久久久久狼| 国产成人久久精品激情| 久久国产免费观看精品3| 亚洲精品国产首次亮相| 午夜精品久久久久久久无码| 免费精品精品国产欧美在线| 国内精品久久久久久久影视麻豆| 亚洲精品高清国产一久久| 精品九九久久国内精品| 精品视频第一页| 久久99国产精品二区不卡| 精品无人区麻豆乱码1区2区 | 亚洲精品无码永久中文字幕| 亚洲欧美日韩精品久久亚洲区| 亚洲欧美日韩精品久久亚洲区 | 青青青青久久精品国产| 国产成人精品日本亚洲专| 国产精品ⅴ无码大片在线看| 99久久国产热无码精品免费| 97精品国产手机| 精品国产综合成人亚洲区| 91人前露出精品国产| 国产在线精品一区二区三区不卡 | 丁香色婷婷国产精品视频| 国产欧美在线观看精品一区二区|