整合營銷服務商

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

          免費咨詢熱線:

          水平滑動選擇框實現示例

          文使用html、css、javascript實現一個水平滑動選擇框,實際效果見下圖,水平方向的三個選項可以實現動態的滑動選擇,當你理解了其中的實現方式后,你就可以實現自己的版本,滑動選項的多少可以自由定義,不是必須三個。

          實現思路

          整個的實現主要使用CSS,只需要一點點JavaScript代碼,用來響應用戶的鼠標點擊事件。

          首先,使用使用css flex布局實現一個水平排列選項列表,共包含三個選項,flex-container的justify-content設置為space-around使每個選項呈現在各自選項中居中的效果。另外設置flex-container寬度為24px,那么每個選項的寬度就是8px,還要設置flex-container的position為相對定位,這兩個設置的作用在下面進行說明。

          接下來,在flex-container內再添加一個flex-item,該flex-item的position屬性設置為絕對定位,寬度為flex-container為33.33%,也就是8px,是一個選項的寬度,背景色為白色,將它疊加到某個選項上面實現選中的效果。為了實現選項切換的動畫效果,使用了css的transform和transition屬性,transform用來設置水平方向的移動距離,移動距離為8px的倍數,這樣看起來就是在選項之間切換,transition用來設置過度的快慢。

          這里需要特別說明的是,當把某個元素設置為絕對定位時,它并不是相對于整個body進行定位的,而是相對于最近的父級相對定位元素來定位,這也是把flex-container設置為相對定位的原因。

          最后,寫一點JavaScript代碼來處理鼠標響應事件,用戶使用鼠標點擊某個選項時,就會為某個選項添加選中的class名,css特性就會觸發相應的動畫,實現選中的效果。

          代碼

          html:

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <meta http-equiv="X-UA-Compatible" content="IE=edge">
              <meta name="viewport" content="width=device-width, initial-scale=1.0">
              <link rel="stylesheet" href="./slide.css">
              <title>slidemenu</title>
          </head>
          <body>
              <h1>水平滑動選擇框示例</h1>
              <div class="row">
                  <div class="menu left" id="slide-menu">
                      <div class="menu-item menu-item-left">選項A</div>
                      <div class="menu-item menu-item-center">選項B</div>
                      <div class="menu-item menu-item-right">選項C</div>
                      <div class="menu-item-toggle-handle"></div>
                  </div>
              </div>
              <script src="./slide.js"></script>
          </body>
          </html>

          css:

          body {
              padding: 0;
              margin: 0;
          }
          .row {
              background-color: #f76820;
          }
          .row {
              display: flex;
              justify-content: center;
              padding: 0.5rem 0;
          }
          .row .menu {
              display: flex;
              position: relative;
              height: 2.25rem;
              flex-wrap: nowrap;
              width: 24rem;
              justify-content: space-around;
              align-items: center;
              background: rgba(52,73,94,.4)!important;
              border: 3px solid rgba(52,73,94,.2);
              border-radius: .2rem;
          }
          .menu .menu-item {
              padding: 5px;
              font-family: Arial, Helvetica, sans-serif;
              color: white;
              cursor: pointer;
              z-index: 1;
          }
          .menu.left .menu-item-left, .menu.center .menu-item-center, .menu.right .menu-item-right {
              color: #f76820 !important;
          }
          .menu .menu-item-toggle-handle {
              width: 33.33%;
              height: 2.2rem;
              background-color: #fff;
              border-radius: 3px;
              position: absolute;
              left: 0;
              transform: translateX(0);
              transition: transform .3s;
          }
          .menu.center .menu-item-toggle-handle {
              transform: translateX(8rem);
          }
          .menu.right .menu-item-toggle-handle {
              transform: translateX(16rem);
          }

          JavaScript:

          HTML+CSS3+JS創意設計——打造炫酷滑動登錄頁面

          **引言:探索交互之美**

          在Web開發的世界里,優秀的用戶體驗往往始于一個精心設計的登錄界面。HTML5、CSS3以及JavaScript的結合讓我們能夠創造出極具創意與個性化的滑動登錄頁面,讓用戶在首次接觸應用時就能留下深刻印象。本篇文章將詳細介紹如何利用基礎的HTML+CSS3+JS技術,從零開始打造一款令人眼前一亮的滑動登錄頁面,并通過詳細的代碼實例解析,帶領您領略前端交互設計的魅力。

          ---

          ### **一、搭建基礎HTML結構**

          **標題:** 構建骨骼——登錄表單的基礎布局

          首先,我們需要構建一個簡潔明了的HTML結構,包括用戶名輸入框、密碼輸入框、登錄按鈕以及可選的注冊鏈接。為了實現滑動效果,我們還將引入一個容器元素來包裹整個登錄區域。

          ```html

          <!DOCTYPE html>

          <html lang="zh">

          <head>

          <meta charset="UTF-8">

          <title>滑動登錄頁面</title>

          <!-- 引入外部CSS和JS文件 -->

          <link rel="stylesheet" href="styles.css">

          <script src="scripts.js" defer></script>

          </head>

          <body>

          <div id="login-slider">

          <form action="#" class="login-form">

          <input type="text" placeholder="用戶名" required>

          <input type="password" placeholder="密碼" required>

          <button type="submit">登錄</button>

          <a href="#">忘記密碼?</a>

          <a href="#">立即注冊</a>

          </form>

          </div>

          </body>

          </html>

          ```

          ---

          ### **二、CSS3魔法——樣式與動畫**

          **標題:** 點綴肌膚——賦予登錄表單靈動之感

          接下來,我們將使用CSS3為登錄表單添加樣式,并利用`@keyframes`規則定義滑動動畫效果。同時,我們還需要保證登錄表單在不同設備上具有良好的響應式布局。

          ```css

          /* styles.css */

          body {

          margin: 0;

          background-color: #f0f0f0;

          }

          #login-slider {

          position: absolute;

          top: 50%;

          left: 50%;

          transform: translate(-50%, -50%);

          width: 300px;

          height: auto;

          background-color: white;

          box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);

          overflow: hidden;

          }

          .login-form {

          display: flex;

          flex-direction: column;

          padding: 20px;

          animation: slideIn 1s ease-in-out forwards;

          }

          /* 定義滑動動畫 */

          @keyframes slideIn {

          0% {

          transform: translateY(100%);

          }

          100% {

          transform: translateY(0);

          }

          }

          /* 登錄表單元素樣式 */

          input[type="text"],

          input[type="password"] {

          margin-bottom: 10px;

          padding: 10px;

          border: none;

          border-radius: 5px;

          }

          button {

          cursor: pointer;

          background-color: #007bff;

          color: white;

          padding: 10px 20px;

          border: none;

          border-radius: 5px;

          text-transform: uppercase;

          font-weight: bold;

          }

          /* 響應式布局 */

          @media screen and (max-width: 768px) {

          #login-slider {

          width: 90%;

          }

          }

          ```

          ---

          ### **三、JavaScript增強交互**

          **標題:** 賦予靈魂——用JavaScript實現滑動觸發與驗證邏輯

          現在我們要借助JavaScript來控制登錄表單的滑動行為,例如當用戶點擊某個鏈接或者頁面加載完成后自動觸發滑動動畫。同時,可以增加一些簡單的表單驗證功能。

          ```javascript

          // scripts.js

          document.addEventListener('DOMContentLoaded', () => {

          // 頁面加載完成后執行滑動動畫

          const loginSlider = document.getElementById('login-slider');

          loginSlider.classList.add('slide-active');

          // 表單提交事件處理,此處僅為示例,實際場景下需加入真實驗證邏輯

          const form = document.querySelector('.login-form');

          form.addEventListener('submit', (event) => {

          event.preventDefault(); // 阻止默認提交行為

          const username = form.querySelector('input[type="text"]').value;

          const password = form.querySelector('input[type="password"]').value;

          // 實現簡單驗證邏輯,如為空檢查

          if (!username || !password) {

          alert('用戶名和密碼不能為空!');

          } else {

          // 這里可以替換為真實的登錄請求邏輯

          console.log('正在登錄...', username, password);

          }

          });

          });

          ```

          ---

          ### **四、創意無限——拓展與優化**

          **標題:** 持續創新——更多滑動登錄頁面的設計思路與實踐

          除了上述基本的滑動登錄形式,還可以進一步豐富設計,比如:

          - 添加進度條指示登錄滑動完成度;

          - 使用CSS變量實現自定義主題切換;

          - 結合SVG圖標增加視覺吸引力;

          - 通過IntersectionObserver API實現視口可見時自動滑動;

          - 配合AJAX技術實現實時驗證和無刷新登錄。

          ---

          **結語:**

          通過這次對HTML+CSS3+JS組合技術的探索,我們不僅成功地制作出了一個富有創意的滑動登錄頁面,還展現了前端技術在交互設計中的無限可能性。學習并靈活運用這些基礎知識,可以讓您的Web應用更加生動有趣,從而更好地吸引和留住用戶。持續關注前端技術的最新發展,不斷挑戰自我,用代碼書寫更美好的Web世界。

          個容器元素包含側邊菜單和主要內容。通過把主要內容區域從一邊拖動到另一邊,來讓左側或右側的側欄菜單進行切換。

          效果圖如下所示:

          用法

          要使用側欄菜單,添加一個父元素<ion-side-menus>,一個中間內容 <ion-side-menu-content>,和一個或更多 <ion-side-menu> 指令。

          <ion-side-menus>
          <!-- 中間內容 -->
          <ion-side-menu-content ng-controller="ContentController">
          </ion-side-menu-content>
          <!-- 左側菜單 -->
          <ion-side-menu side="left">
          </ion-side-menu>
          <!-- 右側菜單 -->
          <ion-side-menu side="right">
          </ion-side-menu>
          </ion-side-menus>
          function ContentController($scope, $ionicSideMenuDelegate) {
          $scope.toggleLeft = function() {
          $ionicSideMenuDelegate.toggleLeft();
          };
          }

          嘗試一下 ?

          API

          屬性類型詳情
          enable-menu-with-back-views

          (可選)

          布爾值

          在返回按鈕顯示時,確認是否啟用側邊欄菜單。

          delegate-handle字符串該句柄用于標識帶有$ionicScrollDelegate的滾動視圖。

          ion-side-menu-content

          一個可見主體內容的容器,同級的一個或多個ionSideMenu 指令。

          用法

          <ion-side-menu-content
          drag-content="true">
          </ion-side-menu-content>

          API

          屬性類型詳情
          drag-content

          (可選)

          布爾值

          內容是否可被拖動。默認為true。


          ion-side-menu

          一個側欄菜單的容器,同級的一個ion-side-menu-content 指令。

          用法

          <ion-side-menu
          side="left"
          width="myWidthValue + 20"
          is-enabled="shouldLeftSideMenuBeEnabled()">
          </ion-side-menu>

          API

          屬性類型詳情
          side字符串

          側欄菜單當前在哪一邊。可選的值有: 'left' 或 'right'。

          is-enabled

          (可選)

          布爾值

          該側欄菜單是否可用。

          width

          (可選)

          數值

          側欄菜單應該有多少像素的寬度。默認為275。


          menu-toggle

          在一個指定的側欄中切換菜單。

          用法

          下面是一個在導航欄內鏈接的例子。點擊此鏈接會自動打開指定的側欄菜單。

          <ion-view>
          <ion-nav-buttons side="left">
          <button menu-toggle="left" class="button button-icon icon ion-navicon"></button>
          </ion-nav-buttons>
          ...
          </ion-view>

          menu-close

          關閉當前打開的側欄菜單。

          用法

          下面是一個在導航欄內鏈接的例子。點擊此鏈接會自動打開指定的側欄菜單。

          <a menu-close href="#/home" class="item">首頁</a>

          $ionicSideMenuDelegate

          該方法直接觸發$ionicSideMenuDelegate服務,來控制所有側欄菜單。用$getByHandle方法控制特定情況下的ionSideMenus。

          用法

          <body ng-controller="MainCtrl">
          <ion-side-menus>
          <ion-side-menu-content>
          內容!
          <button ng-click="toggleLeftSideMenu()">
          切換左側側欄菜單
          </button>
          </ion-side-menu-content>
          <ion-side-menu side="left">
          左側菜單!
          <ion-side-menu>
          </ion-side-menus>
          </body>
          function MainCtrl($scope, $ionicSideMenuDelegate) {
          $scope.toggleLeftSideMenu = function() {
          $ionicSideMenuDelegate.toggleLeft();
          };
          }

          方法

          toggleLeft([isOpen])

          切換左側側欄菜單(如果存在)。

          參數類型詳情
          isOpen

          (可選)

          布爾值

          是否打開或關閉菜單。默認:切換菜單。

          toggleRight([isOpen])

          切換右側側欄菜單(如果存在)。

          參數類型詳情
          isOpen

          (可選)

          布爾值

          是否打開或關閉菜單。默認:切換菜單。

          getOpenRatio()

          獲取打開菜單內容超出菜單寬度的比例。比如,一個寬度為100px的菜單被寬度為50px以50%的比例打開,將會返回一個比例值為0.5。

          返回值: 浮點 0 表示沒被打開,如果左側菜單處于已打開或正在打開為0 到 1,如果右側菜單處于已打開或正在打開為0 到-1。

          isOpen()

          返回值: 布爾值,判斷左側或右側菜單是否已經打開。

          isOpenLeft()

          返回值: 布爾值左側菜單是否已經打開。

          isOpenRight()

          返回值: 布爾值右側菜單是否已經打開。

          canDragContent([canDrag])
          參數類型詳情
          canDrag

          (可選)

          布爾值

          設置是否可以拖動內容打開側欄菜單。

          返回值: 布爾值,是否可以拖動內容打開側欄菜單。

          $getByHandle(handle)
          參數類型詳情
          handle字符串

          例如:

          $ionicSideMenuDelegate.$getByHandle('my-handle').toggleLeft();

          ionic 滑動框


          ion-slide-box

          滑動框是一個包含多頁容器的組件,每頁滑動或拖動切換:

          效果圖如下:

          用法

          <ion-slide-box on-slide-changed="slideHasChanged($index)">
           <ion-slide>
           <div class="box blue"><h1>BLUE</h1></div>
           </ion-slide>
           <ion-slide>
           <div class="box yellow"><h1>YELLOW</h1></div>
           </ion-slide>
           <ion-slide>
           <div class="box pink"><h1>PINK</h1></div>
           </ion-slide></ion-slide-box>

          API

          屬性類型詳情
          delegate-handle

          (可選)

          字符串

          該句柄用$ionicSlideBoxDelegate來標識這個滑動框。

          does-continue

          (可選)

          布爾值

          滑動框是否開啟循環滾動。

          auto-play

          (可選)

          boolean

          設置滑動框是否循環博客,如果 does-continue 為 true,默認也為 true。

          slide-interval

          (可選)

          數字

          等待多少毫秒開始滑動(如果繼續則為true)。默認為4000。

          show-pager

          (可選)

          布爾值

          滑動框的頁面是否顯示。

          pager-click

          (可選)

          表達式

          當點擊頁面時,觸發該表達式(如果shou-pager為true)。傳遞一個'索引'變量。

          on-slide-changed

          (可選)

          表達式

          當滑動時,觸發該表達式。傳遞一個'索引'變量。

          active-slide

          (可選)

          表達式

          將模型綁定到當前滑動框。


          實例

          HTML 代碼

          <ion-slide-box active-slide="myActiveSlide"> <ion-slide> <div class="box blue"><h1>BLUE</h1></div> </ion-slide> <ion-slide> <div class="box yellow"><h1>YELLOW</h1></div> </ion-slide> <ion-slide> <div class="box pink"><h1>PINK</h1></div> </ion-slide></ion-slide-box>

          CSS 代碼

          .slider {
           height: 100%;}.slider-slide {
           color: #000;
           background-color: #fff; text-align: center;
           font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-weight: 300; }.blue {
           background-color: blue;}.yellow {
           background-color: yellow;}.pink {
           background-color: pink;}.box{
           height:100%; } .box h1{
           position:relative; top:50%; transform:translateY(-50%); }

          JavaScript 代碼

          angular.module('ionicApp', ['ionic']).controller('SlideController', function($scope) {
           $scope.myActiveSlide = 1;
           })

          ionic 加載動畫


          ion-spinner

          ionSpinner 提供了許多種旋轉加載的動畫圖標。當你的界面加載時,你就可以呈現給用戶相應的加載圖標。

          該圖標采用的是SVG。

          用法

          <ion-spinner icon="spiral"></ion-spinner> //默認用法

          像大部分其他的ionic組件一樣,spinner也可以使用ionic的標準顏色命名規則,就像下面這樣:

          <ion-spinner class="spinner-energized"></ion-spinner>

          實例

          HTML 代碼

          <ion-content scroll="false" class="has-header">
          <p>
          <ion-spinner icon="android"></ion-spinner>
          <ion-spinner icon="ios"></ion-spinner>
          <ion-spinner icon="ios-small"></ion-spinner>
          <ion-spinner icon="bubbles" class="spinner-balanced"></ion-spinner>
          <ion-spinner icon="circles" class="spinner-energized"></ion-spinner>
          </p>
          <p>
          <ion-spinner icon="crescent" class="spinner-royal"></ion-spinner>
          <ion-spinner icon="dots" class="spinner-dark"></ion-spinner>
          <ion-spinner icon="lines" class="spinner-calm"></ion-spinner>
          <ion-spinner icon="ripple" class="spinner-assertive"></ion-spinner>
          <ion-spinner icon="spiral"></ion-spinner>
          </p>
          </ion-content>

          CSS 代碼

          body {
          cursor: url('http://www.runob.com/try/demo_source/finger.png'), auto;
          } 
          p {
          text-align: center;
          margin-bottom: 40px !important;
          }
          .spinner svg {
          width: 19% !important;
          height: 85px !important;
          }

          JavaScript 代碼

          angular.module('ionicApp', ['ionic'])
          .controller('MyCtrl', function($scope) {
          });

          ionic 選項卡欄操作


          ion-tabs

          ion-tabs 是有一組頁面選項卡組成的選項卡欄。可以通過點擊選項來切換頁面。

          對于 iOS,它會出現在屏幕的底部,Android會出現在屏幕的頂部(導航欄下面)。

          用法

          實例

          <ion-tabsclass="tabs-positive tabs-icon-only"><ion-tabtitle="首頁"icon-on="ion-ios-filing"icon-off="ion-ios-filing-outline"><!-- 標簽 1 內容 --></ion-tab><ion-tabtitle="關于"icon-on="ion-ios-clock"icon-off="ion-ios-clock-outline"><!-- 標簽 2 內容 --></ion-tab><ion-tabtitle="設置"icon-on="ion-ios-gear"icon-off="ion-ios-gear-outline"><!-- 標簽 3 內容 --></ion-tab></ion-tabs>

          嘗試一下 ?

          效果如下所示:

          API

          屬性類型詳情
          delegate-handle

          (可選)

          字符串

          該句柄用$ionicTabsDelegate來標識這些選項卡。


          ion-tab

          隸屬于ionTabs

          包含一個選項卡內容。該內容僅存在于被選中的給定選項卡中。

          每個ionTab都有自己的瀏覽歷史。

          用法

          <ion-tab
           title="Tab!"
           icon="my-icon"
           href="#/tab/tab-link"
           on-select="onTabSelected()"
           on-deselect="onTabDeselected()"></ion-tab>

          API

          屬性類型詳情
          title字符串

          選項卡的標題。

          href

          (可選)

          字符串

          但觸碰的時候,該選項卡將會跳轉的的鏈接。

          icon

          (可選)

          字符串

          選項卡的圖標。如果給定值,它將成為ion-on和ion-off的默認值。

          icon-on

          (可選)

          字符串

          被選中標簽的圖標。

          icon-off

          (可選)

          字符串

          沒被選中標簽的圖標。

          badge

          (可選)

          表達式

          選項卡上的徽章(通常是一個數字)。

          badge-style

          (可選)

          表達式

          選項卡上微章的樣式(例,tabs-positive )。

          on-select

          (可選)

          表達式

          選項卡被選中時觸發。

          on-deselect

          (可選)

          表達式

          選項卡取消選中時觸發。

          ng-click

          (可選)

          表達式

          通常,點擊時選項卡會被選中。如果設置了 ng-Click,它將不會被選中。 你可以用$ionicTabsDelegate.select()來指定切換標簽。


          $ionicTabsDelegate

          授權控制ionTabs指令。

          該方法直接調用$ionicTabsDelegate服務,控制所有ionTabs指令。用$getByHandle方法控制具體的ionTabs實例。

          用法

          <body ng-controller="MyCtrl">
           <ion-tabs>
           <ion-tab title="Tab 1">
           你好,標簽1! <button ng-click="selectTabWithIndex(1)">選擇標簽2</button>
           </ion-tab>
           <ion-tab title="Tab 2">你好標簽2!</ion-tab>
           </ion-tabs></body>
          function MyCtrl($scope, $ionicTabsDelegate) {
           $scope.selectTabWithIndex = function(index) {
           $ionicTabsDelegate.select(index);
           }}

          方法

          select(index, [shouldChangeHistory])

          選擇標簽來匹配給定的索引。

          參數類型詳情
          index數值

          選擇標簽的索引。

          shouldChangeHistory

          (可選)

          布爾值

          此選項是否應該加載這個標簽的瀏覽歷史(如果存在),并使用,或僅加載默認頁面。默認為false。提示:如果一個ion-nav-view在選項卡里,你可能需要設置它為true。

          selectedIndex()

          返回值: 數值, 被選中標簽的索引,如 -1。

          $getByHandle(handle)
          參數類型詳情
          handle字符串

          例如:

          $ionicTabsDelegate.$getByHandle('my-handle').select(0);

          主站蜘蛛池模板: 无码人妻精品一区二区三区99仓本 | 久久婷婷色一区二区三区| 一区二区三区免费视频网站| 人妻无码一区二区三区AV| 日本一区二区三区在线视频| 少妇精品久久久一区二区三区| 视频在线观看一区二区三区| 日韩精品无码一区二区三区AV| 午夜一区二区在线观看| 无码aⅴ精品一区二区三区浪潮 | 日韩一区二区三区不卡视频| 人妻少妇精品一区二区三区| 国产精品亚洲专区一区| 一区二区三区四区精品视频| 久久影院亚洲一区| 国产伦精品一区二区三区四区| 亚洲国产一区二区a毛片| 亚洲国产综合精品一区在线播放| 精品视频一区二区三区四区 | 亚洲熟女乱综合一区二区| 99久久精品午夜一区二区| 国产一区二区电影在线观看| 一区二区三区日本视频| 国产激情一区二区三区在线观看 | 中文字幕VA一区二区三区| 国产亚洲综合一区二区三区| 国产精品一区二区久久精品涩爱| 免费日本一区二区| 久久亚洲中文字幕精品一区四| 精品一区二区三区AV天堂| AV天堂午夜精品一区二区三区| 亚洲码一区二区三区| 亚洲av无码一区二区三区不卡 | 国产伦精品一区二区| 亚洲色精品三区二区一区| 亚洲一区二区在线免费观看| 一区在线免费观看| 国产精品久久久久一区二区| 国产一区二区草草影院| 国产高清一区二区三区| 亚洲丰满熟女一区二区v|