整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          移動端原生純js文字向左無縫滾動特效

          手機頁面移動端,需求是文字向左無縫滾動marquee特效,用了幾個都不行,達不到需求效果,有小bug,最后用了下面的這個原生純js文字向左無縫滾動marquee特效,我測試了沒有問題,可以正常使用它,原生純js代碼少,實用性強,具體看下代碼。

          1.先看效果演示:

            2.原生純js代碼如下:

            var speed=10; //數字越大文字滾動速度越慢

            var tab=document.getElementById("demo");

            var tab1=document.getElementById("demo1");

            var tab2=document.getElementById("demo2");

            tab2.innerHTML=tab1.innerHTML;

            function Marquee(){

            if(tab2.offsetWidth-tab.scrollLeft<=0)

            tab.scrollLeft-=tab1.offsetWidth

            else{

            tab.scrollLeft++;

            }

            }

            var MyMar=setInterval(Marquee,speed);

            tab.onmouseover=function() {clearInterval(MyMar)};

            tab.onmouseout=function() {MyMar=setInterval(Marquee,speed)};

            var onOff = true;

            var Time = setInterval(Chang,3000);

            function Chang(){

            if(onOff){

            oFig.style.marginLeft='-100%';

            onOff = false;

            }else{

            oFig.style.marginLeft='0';

            onOff = true;

            }

            }

            3.完整版代碼地址:

            http://tangjiusheng.com/js/20180526.html

            除注明外的文章,均為來源:湯久生博客,轉載請保留本文地址!

            im的使用

            vim基本操作

            移動光標

            下面操作均需處在一般模式(默認的模式)下:

            • h j k l 分別為“左”“下”“上”“右”
            • 翻半頁:Ctrl + d(d for down),Ctrl + u(u for up)。
            • 翻一頁:Ctrl + f(f for front),Ctrl + b(b for back)。
            • gg表示移到到首行。
            • G表示移動到尾行。
            • nG(n指的是數字)表示移動到第n行;一般用于根據程序錯誤提示信息進行 bug fix。
            • 0表示移到光標所在行的行首; $表示移動到光標所在行的行尾。

            復制剪切粘貼

            • 按yy復制光標所在行。
            • 按dd剪切光標所在行,如果光剪切不粘貼,那就相當于刪除。
            • 按p將復制/剪切的內容粘貼至光標后,因為光標是在具體字符的位置上,所以實際是在該字符的后面;整行的復制粘貼在游標的下一行。

            v模式相關

            • 按v切換到“高亮選擇模式”,移動光標進行選擇。
            • 在v模式下,按y(y for yank)復制高亮選擇的內容。
            • 在v模式下,按d剪切高亮選擇的內容,如果光剪切不粘貼,那就相當于刪除。

            撤銷、重做

            以下僅討論vim下的操作(vi的操作稍有不同):

            • 按u進行撤銷,可多次撤銷。
            • 按Ctrl + r(r for redo)進行重做,可多次重做。

            進入編輯模式

            下面所有操作均需在一般模式下執行:

            • i,在當前光標所在字符前插入。
            • o,在當前光標所在行的下一行插入新的一行。
            • O,在當前光標所在行的上一行插入新的一行。

            查找和替換字符串

            下面所有操作均需在一般模式下執行:

            • /word,向下查找一個字符串word,查找后按n看下一匹配結果,按N看上一匹配結果。
            • ?word,向上查找一個字符串word,查找后按n看下一匹配結果,按N看上一匹配結果。
            • :s/word1/word2/g,查找word1并替換為word2,/g表示全文替換,不加則只替換每行的第一個匹配項。
            • :n1,n2s/word1/word2/g,在n1和n2行之間查找word1并替換為word2,其中n1、n2皆可取數字,另外n2可取$表示最后一行。

            行號相關

            • :set nu表示顯示行號。
            • :set nonu表示不顯示行號。

            保存及退出

            • :w,保存文本。
            • :q,退出vim。
            • :w!,強制保存,在root用戶下,即使文本只讀也可以完成保存。
            • :q!,強制退出,所有改動不生效。
            • :wq,保存并退出。

            vim插件

            下載Vundle

            $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
            

            配置插件

            $ vim ~/.vimrc
            set nocompatible " be iMproved, required
            filetype off " required
            set rtp+=~/.vim/bundle/Vundle.vim
            call vundle#begin()
            Plugin 'VundleVim/Vundle.vim'
            Plugin 'tpope/vim-fugitive'
            Plugin 'git://git.wincent.com/command-t.git'
            Plugin 'file:///home/gmarik/path/to/plugin'
            Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
            call vundle#end() " required
            filetype plugin indent on " required
            

            安裝插件

            復制

            $ vim
            :PluginInstall
            

            或者

            復制

            $ vim +PluginInstall +qall
            

            然后會出現如下圖一樣的界面


            然后慢慢等!慢慢等!慢慢等!這里敲黑板,畫圈圈記起來,筆者當年就是進入這個界面一臉懵逼發現不會動就Ctrl+C了,然后就以為自己配置失敗了 o_O。

            仔細看,最左邊正在安裝的有個>符號,新增的插件有個+符號,左下角的英文也是已經相當明白了!

            一鍵安裝?

            沒錯,我知道你懶,所以這里提供了一鍵安裝,移步這里一鍵安裝

            • 將我的倉庫拉到你的本地
            $ git clone https://github.com/yiranzai/oh-my-zsh.git ~/.oh-my-zsh
            
            • 安裝
            $ cd ~/.oh-my-zsh
            $ ./install.sh
             -----------------------------warning-------------------------
            | The installation is successful, please execute |
            | source ~/.zshrc |
             -------------------------------end---------------------------
            

            該腳本會安裝vim,配置zshrc/vimrc

            這里貼出我的配置

            作 Parul Pandey

            郭一璞 編譯

            量子位 出品 | 公眾號 QbitAI

            作為一個超好用的交互式筆記本,Jupyter總是深受開發者的喜愛。

            不過,除了基礎的寫文檔之外,其實Jupyter還有N多功能,簡直是一個集視頻、圖片、PPT、多種交互于一身的萬花筒。

            如果不會用,你可能錯過了Jupyter 99%的功能。

            Medium上走向數據科學(Towards Data Science)專欄的作者Parul Pandey就總結了七大Jupyter的進階用法,量子位編譯如下~

            執行shell命令

            Shell是一種與計算機進行文本交互的方式。

            一般來講,當你正在使用Python編譯器,需要用到命令行工具的時候,要在shell和IDLE之間進行切換。

            但是,如果你用的是Jupyter,就完全不用這么麻煩了,你可以直接在命令之前放一個“!”,就能執行shell命令,完全不用切換來切換去,就能在IPython里執行任何命令行。

            1In [1]: !ls
            
            2example.jpeg list tmp
            
            3In [2]: !pwd
            
            4/home/Parul/Desktop/Hello World Folder'
            
            5In [3]: !echo "Hello World"
            
            6Hello World
            
            7
            

            我們甚至可以將值傳遞給shell,像下面這樣:

            1In [4]: files= !ls
            
            2In [5]: print(files)
            
            3['example.jpeg', 'list', 'tmp']
            
            4In [6]: directory = !pwd
            
            5In [7]: print(directory)
            
            6['/Users/Parul/Desktop/Hello World Folder']
            
            7In [8]: type(directory)
            
            8IPython.utils.text.SList
            

            注意,返回結果的數據類型不是列表。

            給Jupyter換主題

            使用Jupyter主題,不僅能讓你的Jupyter界面更好看、更舒服,還能讓屏幕上的代碼看起來更顯眼。

            比如Chesterish主題:

            solarizedl主題:

            來看一下具體的操作方法:

            第一步,安裝:

            1pip install jupyterthemes
            

            第二步,加載可用主題列表:

            1jt -l
            

            第三步,選擇你想要的主題:

            1# selecting a particular theme
            
            2jt -t <name of the theme>
            
            3# reverting to original Theme
            
            4jt -r
            

            現在可用的主題有:

            chesterish

            grade3

            gruvboxd

            gruvboxl monokai

            oceans16

            onedork

            solarizedd

            solarizedl

            把名字填進去就好啦。

            不過,每次換主題的時候都要重新加載Jupyter,才能看到主題變化。

            另外我們上面講的在命令之前加“!”也一樣可用。

            筆記本擴展

            筆記本擴展(nbextensions)是一種JavaScript模塊,可以加載到筆記本前端頁面上,可以大大提升用戶體驗。

            比如下面這些擴展工具,簡直能讓效率提升10000倍。

            Hinterland

            Hinterland功能可以讓你每敲完一個鍵,就出現下拉菜單,可以直接選中你需要的詞匯。

            Snippets

            Snippets在工具欄里加了一個下拉菜單,可以非常方便的直接插入代碼段,完全不用手動敲。

            拆分單元格

            拆分筆記本中的單元格,改成相鄰的模式,看起來就像分了兩欄。

            目錄

            這個功能可以自動找到所有的標題,生成目錄。

            并且這個目錄還是移動的呦,你可以放在側邊欄,也可以拖動到任何你喜歡的地方懸浮起來。

            折疊一個標題下的全部內容

            如果你的代碼太長,覺得滾動過去太麻煩,可以直接折疊掉。

            Autopep8

            一鍵美化代碼,強迫癥的福音。

            安裝方法

            最后看一下怎么裝,需要用到conda:

            1conda install -c conda-forge jupyter_nbextensions_configurator
            

            或者用pip:

            1pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install
            
            2#incase you get permission errors on MacOS,
            
            3pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install --user
            

            然后把Jupyter打開,你就可以看到NBextensions這個選項卡了。

            找不到的話就去菜單的Edit里面找。

            搞定。

            Jupyter小工具

            還有一些Jupyter小工具,比如滑塊、文本框之類的部分,可以做一些方便的交互。

            滑塊

            1def f(x):
            
            2 return x
            
            3# Generate a slider 
            
            4interact(f, x=10,);
            

            布爾值生成復選框

            1# Booleans generate check-boxes
            
            2interact(f, x=True);
            

            字符串生成文本區域

            1# Strings generate text areas
            
            2interact(f, x='Hi there!');
            

            播放器

             1play = widgets.Play(
            
             2 # interval=10,
            
             3 value=50,
            
             4 min=0,
            
             5 max=100,
            
             6 step=1,
            
             7 description="Press play",
            
             8 disabled=False
            
             9)
            
            10slider = widgets.IntSlider()
            
            11widgets.jslink((play, 'value'), (slider, 'value'))
            
            12widgets.HBox([play, slider])
            

            日歷

            1widgets.DatePicker(
            
            2 description='Pick a Date',
            
            3 disabled=False
            
            4)
            

            不過這個部件只能咋Chrome和Edge里用,Firefox和Safari不支持。

            調色盤

            1widgets.ColorPicker(

            2 concise=False,

            3 description='Pick a color',

            4 value='blue',

            5 disabled=False

            6)

            標簽

            1tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']
            
            2children = [widgets.Text(description=name) for name in tab_contents]
            
            3tab = widgets.Tab()
            
            4tab.children = children
            
            5for i in range(len(children)):
            
            6 tab.set_title(i, str(i))
            
            7tab
            

            其他的小部件,可以在文末的傳送門跳轉到GitHub尋找。

            安裝方法

            1# pip
            
            2pip install ipywidgets
            
            3jupyter nbextension enable --py widgetsnbextension
            
            4# Conda
            
            5conda install -c conda-forge ipywidgets
            
            6#Installing ipywidgets with conda automatically enables the extension
            

            使用“interact”功能自動創建UI控件,這是使用IPython最方便的方法。

            1# Start with some imports!
            
            2from ipywidgets import interact
            
            3import ipywidgets as widgets
            

            Qgrid

            Qgrid也是一個Jupyter的小部件,不過它主要用于數據幀,裝上之后,就可以像操作Excel里的篩選功能一樣,方便的處理數據。

            安裝方法

            用pip安裝:

            1pip install qgrid
            
            2jupyter nbextension enable --py --sys-prefix qgrid
            
            3# only required if you have not enabled the ipywidgets nbextension yet
            
            4jupyter nbextension enable --py --sys-prefix widgetsnbextension
            

            用conda安裝:

            1# only required if you have not added conda-forge to your channels yet
            
            2conda config --add channels conda-forge
            
            3conda install qgrid
            

            放PPT

            人在江湖飄,難免遇到要做PPT的時候。

            但是,如果你的內容都已經放在Jupyter里了,再重新導入PPT,太麻煩了,我們自動轉換吧。

            一種方法是用Jupyter內置的PPT選項,依次點擊菜單欄里的View → Cell Toolbar → Slideshow,之后每個單元格上面都會有一個灰色的橫條,選Sub-Slide

            然后輸入以下代碼:

            1jupyter nbconvert *.ipynb --to slides --post serve
            
            2# insert your notebook name instead of *.ipynb
            

            好了,現在就變成PPT樣式的了,顯示在端口8000,你也可以查看源代碼找到PPT文件。

            你也可以提前換好主題,比如onedork主題,然后再轉換成PPT的的時候就是同一個主題風格的PPT了。

            不過,用PyTorch默認方法生成的PPT代碼不能編輯,這個時候就要用到RISE插件了。

            RISE用到reveal.js來運行PPT,可以不退出PPT,直接運行代碼。

            先來安裝RISE,推薦用conda:

            1conda install -c damianavila82 rise
            

            其實不太推薦pip:

            1pip install RISE
            

            然后調用JS和CSS:

            1jupyter-nbextension install rise --py --sys-prefix
            
            2#enable the nbextension:
            
            3jupyter-nbextension enable rise --py --sys-prefix
            

            安裝好啦,現在重新打開你的Jupyter Notebook,發現一個新的擴展,名叫“Enter/Exit RISE Slideshow”。

            戳一下,一個可以邊演示邊改的PPT就好了。

            嵌入鏈接和pdf

            扔鏈接再跳轉實在是太麻煩了,不如直接把素材放進Jupyter里面。

            嵌入鏈接

            1#Note that http urls will not be displayed. Only https are allowed inside the Iframe
            
            2from IPython.display import IFrame
            
            3IFrame('https://en.wikipedia.org/wiki/HTTPS', width=800, height=450)
            

            操作方式如下,當然你需要把鏈接換成你要放的鏈接:

            嵌入pdf

            1from IPython.display import IFrame
            
            2IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)
            

            同樣,把pdf鏈接換成你需要用的pdf。

            傳送門

            原文:Bringing the best out of Jupyter Notebooks for Data Science

            Parul Pandey, Towards Data Science

            https://towardsdatascience.com/bringing-the-best-out-of-jupyter-notebooks-for-data-science-f0871519ca29

            Jupyter主題

            https://github.com/dunovank/jupyter-themes

            IPython小部件

            https://github.com/jupyter-widgets/ipywidgets

            誠摯招聘

            量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回復“招聘”兩個字。

            量子位 QbitAI · 頭條號簽約作者

            ?'?' ? 追蹤AI技術和產品新動態


            主站蜘蛛池模板: 3D动漫精品啪啪一区二区下载| 国产AV国片精品一区二区| 成人无码AV一区二区| 亚洲综合无码一区二区三区| 国产A∨国片精品一区二区| 无码中文字幕一区二区三区| 免费看一区二区三区四区| 动漫精品第一区二区三区| 无码乱码av天堂一区二区| 国产精品一区二区久久不卡| 国产在线观看精品一区二区三区91| 无码人妻精品一区二区三18禁 | 日本免费一区二区三区最新vr| 亚洲一区二区三区首页| 国产福利视频一区二区| 日韩一区二区三区在线精品| 夜精品a一区二区三区| 亚洲AV成人精品日韩一区| 人妻激情偷乱视频一区二区三区| 国产伦精品一区二区三区视频猫咪 | 国产一区二区四区在线观看| 日本一区二区三区精品视频| 中文字幕av日韩精品一区二区| 无码少妇精品一区二区免费动态| 熟女性饥渴一区二区三区| 国产伦精品一区二区免费 | 亚洲熟妇av一区| 亚洲国产日韩一区高清在线| 国产午夜精品免费一区二区三区| 亚洲AV无码一区二三区| 一区二区三区电影在线观看| 精品国产日韩亚洲一区在线| 亚洲高清一区二区三区电影| 欧美日韩国产免费一区二区三区 | 福利一区在线视频| 波霸影院一区二区| 一区二区三区中文字幕| 精品一区二区三区色花堂| 中文字幕在线观看一区| 农村人乱弄一区二区| 国产成人精品一区二区三区免费 |