android 點擊側滑代碼,代碼分析Android實現側滑菜單

Android 側滑菜單的實現,參考網上的代碼,實現側滑菜單。最重要的是這個動畫類UgcAnimations,如何使用動畫類來側滑的封裝FlipperLayout。

1、實現效果

06a9a70cdb8cc98d415c6e748e6e9752.gif

2、動畫類UgcAnimations

package com.mmsx.base;

import android.content.Context;

import android.view.View;

import android.view.ViewGroup.MarginLayoutParams;

import android.view.animation.AlphaAnimation;

import android.view.animation.Animation;

import android.view.animation.AnimationSet;

import android.view.animation.AnticipateInterpolator;

import android.view.animation.OvershootInterpolator;

import android.view.animation.RotateAnimation;

import android.view.animation.ScaleAnimation;

import android.view.animation.TranslateAnimation;

import android.widget.ImageView;

import android.widget.RelativeLayout;

/**

* Path動畫類

*

*/

public class UgcAnimations {

private static int xOffset = 15;

private static int yOffset = -13;

public static void initOffset(Context context) {

xOffset = (int) (15 * context.getResources().getDisplayMetrics().density);

yOffset = -(int) (13 * context.getResources().getDisplayMetrics().density);

}

public static Animation getRotateAnimation(float fromDegrees,

float toDegrees, long durationMillis) {

RotateAnimation rotate = new RotateAnimation(fromDegrees, toDegrees,

Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,

0.5f);

rotate.setDuration(durationMillis);

rotate.setFillAfter(true);

return rotate;

}

public static Animation getAlphaAnimation(float fromAlpha, float toAlpha,

long durationMillis) {

AlphaAnimation alpha = new AlphaAnimation(fromAlpha, toAlpha);

alpha.setDuration(durationMillis);

alpha.setFillAfter(true);

return alpha;

}

public static Animation getScaleAnimation(long durationMillis) {

ScaleAnimation scale = new ScaleAnimation(1.0f, 1.5f, 1.0f, 1.5f,

Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,

0.5f);

scale.setDuration(durationMillis);

return scale;

}

public static Animation getTranslateAnimation(float fromXDelta,

float toXDelta, float fromYDelta, float toYDelta,

long durationMillis) {

TranslateAnimation translate = new TranslateAnimation(fromXDelta,

toXDelta, fromYDelta, toYDelta);

translate.setDuration(durationMillis);

translate.setFillAfter(true);

return translate;

}

public static void startOpenAnimation(RelativeLayout relativeLayout,

ImageView background, ImageView menu, long durationMillis) {

background.setVisibility(View.VISIBLE);

relativeLayout.setVisibility(View.VISIBLE);

background.startAnimation(getAlphaAnimation(0f, 1f, durationMillis));

menu.startAnimation(getRotateAnimation(0, 90, durationMillis));

for (int i = 0; i < relativeLayout.getChildCount(); i++) {

ImageView imageView = (ImageView) relativeLayout.getChildAt(i);

imageView.setVisibility(View.VISIBLE);

MarginLayoutParams params = (MarginLayoutParams) imageView

.getLayoutParams();

AnimationSet set = new AnimationSet(true);

set.addAnimation(getRotateAnimation(-270, 0, durationMillis));

set.addAnimation(getAlphaAnimation(0.5f, 1.0f, durationMillis));

set.addAnimation(getTranslateAnimation(

-params.leftMargin + xOffset, 0f, params.bottomMargin

+ yOffset, 0f, durationMillis));

set.setFillAfter(true);

set.setDuration(durationMillis);

set.setStartOffset((i * 100)

/ (-1 + relativeLayout.getChildCount()));

set.setInterpolator(new OvershootInterpolator(1f));

imageView.startAnimation(set);

}

}

public static void startCloseAnimation(final RelativeLayout relativeLayout,

final ImageView background, ImageView menu, long durationMillis) {

background.startAnimation(getAlphaAnimation(1f, 0f, durationMillis));

menu.startAnimation(getRotateAnimation(90, 0, durationMillis));

for (int i = 0; i < relativeLayout.getChildCount(); i++) {

final ImageView imageView = (ImageView) relativeLayout

.getChildAt(i);

MarginLayoutParams params = (MarginLayoutParams) imageView

.getLayoutParams();

AnimationSet set = new AnimationSet(true);

set.addAnimation(getRotateAnimation(0, -270, durationMillis));

set.addAnimation(getAlphaAnimation(1.0f, 0.5f, durationMillis));

set.addAnimation(getTranslateAnimation(0f, -params.leftMargin

+ xOffset, 0f, params.bottomMargin + yOffset,

durationMillis));

set.setFillAfter(true);

set.setDuration(durationMillis);

set.setStartOffset(((relativeLayout.getChildCount() - i) * 100)

/ (-1 + relativeLayout.getChildCount()));

set.setInterpolator(new AnticipateInterpolator(1f));

set.setAnimationListener(new Animation.AnimationListener() {

public void onAnimationStart(Animation arg0) {

}

public void onAnimationRepeat(Animation arg0) {

}

public void onAnimationEnd(Animation arg0) {

relativeLayout.setVisibility(View.GONE);

background.setVisibility(View.GONE);

}

});

imageView.startAnimation(set);

}

}

public static Animation clickAnimation(long durationMillis) {

AnimationSet set = new AnimationSet(true);

set.addAnimation(getAlphaAnimation(1.0f, 0.3f, durationMillis));

set.addAnimation(getScaleAnimation(durationMillis));

set.setDuration(durationMillis);

return set;

}

}

3、封裝使用動畫類FlipperLayout

package com.mmsx.base;

import android.content.Context;

import android.util.AttributeSet;

import android.util.TypedValue;

import android.view.MotionEvent;

import android.view.VelocityTracker;

import android.view.View;

import android.view.ViewConfiguration;

import android.view.ViewGroup;

import android.widget.Scroller;

/**

* 自己重寫的ViewGroup,用與滑動切換界面使用,代碼不詳解,慢點看的話應該能看懂的...

*/

public class FlipperLayout extends ViewGroup {

private Scroller mScroller;

private VelocityTracker mVelocityTracker;

private int mWidth;

public static final int SCREEN_STATE_CLOSE = 0;

public static final int SCREEN_STATE_OPEN = 1;

public static final int TOUCH_STATE_RESTART = 0;

public static final int TOUCH_STATE_SCROLLING = 1;

public static final int SCROLL_STATE_NO_ALLOW = 0;

public static final int SCROLL_STATE_ALLOW = 1;

private int mScreenState = 0;

private int mTouchState = 0;

private int mScrollState = 0;

private int mVelocityValue = 0;

private boolean mOnClick = false;

private onUgcDismissListener mOnUgcDismissListener;

private onUgcShowListener mOnUgcShowListener;

public FlipperLayout(Context context) {

super(context);

mScroller = new Scroller(context);

mWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,

54, getResources().getDisplayMetrics());

}

public FlipperLayout(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

public FlipperLayout(Context context, AttributeSet attrs) {

super(context, attrs);

}

protected void onLayout(boolean changed, int l, int t, int r, int b) {

for (int i = 0; i < getChildCount(); i++) {

View child = getChildAt(i);

int height = child.getMeasuredHeight();

int width = child.getMeasuredWidth();

child.layout(0, 0, width, height);

}

}

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

int width = MeasureSpec.getSize(widthMeasureSpec);

int height = MeasureSpec.getSize(heightMeasureSpec);

setMeasuredDimension(width, height);

for (int i = 0; i < getChildCount(); i++) {

getChildAt(i).measure(widthMeasureSpec, heightMeasureSpec);

}

}

public boolean dispatchTouchEvent(MotionEvent ev) {

obtainVelocityTracker(ev);

switch (ev.getAction()) {

case MotionEvent.ACTION_DOWN:

mTouchState = mScroller.isFinished() ? TOUCH_STATE_RESTART

: TOUCH_STATE_SCROLLING;

if (mTouchState == TOUCH_STATE_RESTART) {

int x = (int) ev.getX();

int screenWidth = getWidth();

if (x <= mWidth && mScreenState == SCREEN_STATE_CLOSE

&& mTouchState == TOUCH_STATE_RESTART

|| x >= screenWidth - mWidth

&& mScreenState == SCREEN_STATE_OPEN

&& mTouchState == TOUCH_STATE_RESTART) {

if (mScreenState == SCREEN_STATE_OPEN) {

mOnClick = true;

}

mScrollState = SCROLL_STATE_ALLOW;

} else {

mOnClick = false;

mScrollState = SCROLL_STATE_NO_ALLOW;

}

} else {

return false;

}

break;

case MotionEvent.ACTION_MOVE:

mVelocityTracker.computeCurrentVelocity(1000,

ViewConfiguration.getMaximumFlingVelocity());

if (mScrollState == SCROLL_STATE_ALLOW

&& getWidth() - (int) ev.getX() < mWidth) {

return true;

}

break;

case MotionEvent.ACTION_UP:

releaseVelocityTracker();

if (mOnClick) {

mOnClick = false;

mScreenState = SCREEN_STATE_CLOSE;

mScroller.startScroll(getChildAt(1).getScrollX(), 0,

-getChildAt(1).getScrollX(), 0, 800);

invalidate();

}

break;

}

return super.dispatchTouchEvent(ev);

}

public boolean onInterceptTouchEvent(MotionEvent ev) {

obtainVelocityTracker(ev);

switch (ev.getAction()) {

case MotionEvent.ACTION_DOWN:

mTouchState = mScroller.isFinished() ? TOUCH_STATE_RESTART

: TOUCH_STATE_SCROLLING;

if (mTouchState == TOUCH_STATE_SCROLLING) {

return false;

}

break;

case MotionEvent.ACTION_MOVE:

mOnClick = false;

mVelocityTracker.computeCurrentVelocity(1000,

ViewConfiguration.getMaximumFlingVelocity());

if (mScrollState == SCROLL_STATE_ALLOW

&& Math.abs(mVelocityTracker.getXVelocity()) > 200) {

return true;

}

break;

case MotionEvent.ACTION_UP:

releaseVelocityTracker();

if (mScrollState == SCROLL_STATE_ALLOW

&& mScreenState == SCREEN_STATE_OPEN) {

return true;

}

break;

}

return super.onInterceptTouchEvent(ev);

}

public boolean onTouchEvent(MotionEvent event) {

obtainVelocityTracker(event);

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

mTouchState = mScroller.isFinished() ? TOUCH_STATE_RESTART

: TOUCH_STATE_SCROLLING;

if (mTouchState == TOUCH_STATE_SCROLLING) {

return false;

}

break;

case MotionEvent.ACTION_MOVE:

mVelocityTracker.computeCurrentVelocity(1000,

ViewConfiguration.getMaximumFlingVelocity());

mVelocityValue = (int) mVelocityTracker.getXVelocity();

getChildAt(1).scrollTo(-(int) event.getX(), 0);

break;

case MotionEvent.ACTION_UP:

if (mScrollState == SCROLL_STATE_ALLOW) {

if (mVelocityValue > 2000) {

mScreenState = SCREEN_STATE_OPEN;

mScroller

.startScroll(

getChildAt(1).getScrollX(),

0,

-(getWidth()

- Math.abs(getChildAt(1)

.getScrollX()) -

mWidth), 0, 250);

invalidate();

} else if (mVelocityValue < -2000) {

mScreenState = SCREEN_STATE_CLOSE;

mScroller.startScroll(getChildAt(1).getScrollX(), 0,

-getChildAt(1).getScrollX(), 0, 250);

invalidate();

} else if (event.getX() < getWidth() / 2) {

mScreenState = SCREEN_STATE_CLOSE;

mScroller.startScroll(getChildAt(1).getScrollX(), 0,

-getChildAt(1).getScrollX(), 0, 800);

invalidate();

} else {

mScreenState = SCREEN_STATE_OPEN;

mScroller

.startScroll(

getChildAt(1).getScrollX(),

0,

-(getWidth()

- Math.abs(getChildAt(1)

.getScrollX()) -

mWidth), 0, 800);

invalidate();

}

}

break;

}

return super.onTouchEvent(event);

}

public void open() {

mTouchState = mScroller.isFinished() ? TOUCH_STATE_RESTART

: TOUCH_STATE_SCROLLING;

if (mTouchState == TOUCH_STATE_RESTART) {

mScreenState = SCREEN_STATE_OPEN;

mScroller.startScroll(getChildAt(1).getScrollX(), 0, -(getWidth()

- Math.abs(getChildAt(1).getScrollX()) -

mWidth), 0, 800);

invalidate();

}

}

//關閉當前的側滑菜單,用view打開點擊事件的頁面

public void close(View view) {

mScreenState = SCREEN_STATE_CLOSE;

mScroller.startScroll(getChildAt(1).getScrollX(), 0, -getChildAt(1)

.getScrollX(), 0, 800);

invalidate();

setContentView(view);

}

public void computeScroll() {

super.computeScroll();

if (mScroller.computeScrollOffset()) {

getChildAt(1).scrollTo(mScroller.getCurrX(), mScroller.getCurrY());

postInvalidate();

} else {

if (mScreenState == SCREEN_STATE_OPEN) {

if (mOnUgcDismissListener != null) {

mOnUgcDismissListener.dismiss();

}

} else if (mScreenState == SCREEN_STATE_CLOSE) {

if (mOnUgcShowListener != null) {

mOnUgcShowListener.show();

}

}

}

}

private void obtainVelocityTracker(MotionEvent event) {

if (mVelocityTracker == null) {

mVelocityTracker = VelocityTracker.obtain();

}

mVelocityTracker.addMovement(event);

}

private void releaseVelocityTracker() {

if (mVelocityTracker != null) {

mVelocityTracker.recycle();

mVelocityTracker = null;

}

}

public int getScreenState() {

return mScreenState;

}

public void setContentView(View view) {

removeViewAt(1);

addView(view, 1, getLayoutParams());

}

public interface OnOpenListener {

public abstract void open();

}

public interface OnCloseListener {

public abstract void close();

}

public interface onUgcDismissListener {

public abstract void dismiss();

}

public interface onUgcShowListener {

public abstract void show();

}

public void setOnUgcDismissListener(

onUgcDismissListener onUgcDismissListener) {

mOnUgcDismissListener = onUgcDismissListener;

}

public void setOnUgcShowListener(onUgcShowListener onUgcShowListener) {

mOnUgcShowListener = onUgcShowListener;

}

}

4、主界面MainActivity

package com.mmsx.activity;

import com.mmsx.activity.SideslipMenu.onChangeViewListener;

import com.mmsx.activity.SideslipOther.onDataListener;

import com.mmsx.base.FlipperLayout;

import com.mmsx.base.FlipperLayout.OnOpenListener;

import com.mmsx.base.ViewUtil;

import android.os.Bundle;

import android.app.Activity;

import android.view.ViewGroup.LayoutParams;

import android.widget.Toast;

public class MainActivity extends Activity implements OnOpenListener{

//側滑主要控制類,設置跟布局

private FlipperLayout mRoot;

//側滑的默認界面,主界面

private SideslipHome mHome;

//側滑的菜單,進行選擇的

private SideslipMenu mSideslipMenu;

//其他菜單列表選擇的效果

private SideslipOther mOther;

//退出時間間隔變量

private long mExitTime;

//時間間隔2s

private static final int INTERVAL = 2000;

//側滑菜單選中的item

private int mViewPosition;

//側滑傳遞的標題

private String mstrTitle;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//創建容器,并設置全屏大小

mRoot = new FlipperLayout(this);

//布局的參數

LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT,

LayoutParams.FILL_PARENT);

mRoot.setLayoutParams(params);

//創建菜單界面和內容首頁界面,并添加到容器中,用于初始顯示

mHome = new SideslipHome(this, this);

mSideslipMenu = new SideslipMenu(this);

mRoot.addView(mSideslipMenu.getView(), params);

mRoot.addView(mHome.getView(), params);

//設置跟布局

setContentView(mRoot);

//設置監聽

setListener();

}

//設置監聽

private void setListener() {

mHome.setOnOpenListener(this);

//監聽菜單界面切換顯示內容(onChangeViewListener接口在SideslipMenu中定義)

mSideslipMenu.setOnChangeViewListener(new onChangeViewListener() {

public void onChangeView(int arg0) {

mViewPosition = arg0;

mOther = new SideslipOther(MainActivity.this);

switch (arg0) {

case ViewUtil.HOME:

mRoot.close(mHome.getView());

break;

case ViewUtil.MESSAGE:

mstrTitle = "消息";

//設置數據接口監聽

mOther.setDataTitle(new DataTitle());

mRoot.close(mOther.getView());

break;

case ViewUtil.FRIENDS:

mstrTitle = "好友";

mOther.setDataTitle(new DataTitle());

mRoot.close(mOther.getView());

break;

case ViewUtil.PHOTO:

mstrTitle = "照片";

mOther.setDataTitle(new DataTitle());

mRoot.close(mOther.getView());

break;

case ViewUtil.VIEWED:

mstrTitle = "轉帖";

mOther.setDataTitle(new DataTitle());

mRoot.close(mOther.getView());

break;

case ViewUtil.GIFTS:

mstrTitle = "禮物";

mOther.setDataTitle(new DataTitle());

mRoot.close(mOther.getView());

break;

case ViewUtil.RECOMMEND:

mstrTitle = "游戲";

mOther.setDataTitle(new DataTitle());

mRoot.close(mOther.getView());

break;

case ViewUtil.LBS:

mstrTitle = "附近 ";

mOther.setDataTitle(new DataTitle());

mRoot.close(mOther.getView());

break;

default:

break;

}

}

});

}

//傳遞數據到側滑選中的頁面

private class DataTitle implements onDataListener{

@Override

public String getDataTitle() {

return mstrTitle;

}

}

@Override

public void open() {

if (mRoot.getScreenState() == FlipperLayout.SCREEN_STATE_CLOSE) {

mRoot.open();

}

}

/**

* 返回鍵監聽

*/

public void onBackPressed() {

/**

* 如果界面的path菜單沒有關閉時,先將path菜單關閉,否則則判斷兩次返回時間間隔,小于兩秒則退出程序

*/

if (mRoot.getScreenState() == FlipperLayout.SCREEN_STATE_OPEN) {

if (mSideslipMenu.getUgcIsShowing()) {

mSideslipMenu.closeUgc();

} else {

exit();

}

} else {

switch (mViewPosition) {

case ViewUtil.HOME:

if (mHome.getUgcIsShowing()) {

mHome.closeUgc();

} else {

exit();

}

break;

default:

exit();

break;

}

}

}

/**

* 判斷兩次返回時間間隔,小于兩秒則退出程序

*/

private void exit() {

if (System.currentTimeMillis() - mExitTime > INTERVAL) {

Toast.makeText(this, "再按一次返回鍵,可直接退出程序", Toast.LENGTH_SHORT).show();

mExitTime = System.currentTimeMillis();

} else {

finish();

android.os.Process.killProcess(android.os.Process.myPid());

System.exit(0);

}

}

}

5、SideslipHome

package com.mmsx.activity;

import com.mmsx.base.FlipperLayout.OnOpenListener;

import android.app.Activity;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.TextView;

public class SideslipHome {

private Context mContext;

private Activity mActivity;

private View mHomeView;

private boolean mUgcIsShowing = false;

private OnOpenListener mOnOpenListener;

public SideslipHome(Context context, Activity activity) {

mContext = context;

mActivity = activity;

mHomeView = LayoutInflater.from(context).inflate(R.layout.sideslip_home, null);

initUI();

}

private void initUI() {

TextView ivTitleName = (TextView)mHomeView.findViewById(R.id.ivTitleName);

ivTitleName.setText("主頁動態");

}

public void setOnOpenListener(OnOpenListener onOpenListener) {

mOnOpenListener = onOpenListener;

}

public View getView() {

return mHomeView;

}

/**

* 獲取Path菜單顯示狀態

*/

public boolean getUgcIsShowing() {

return mUgcIsShowing;

}

/**

* 關閉Path菜單

*/

public void closeUgc() {

mUgcIsShowing = false;

}

}

好了,以上就是本文的全部敘述,希望大家喜歡。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534416.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙系統年底問世視頻,鴻蒙系統年底問世 什么時候上市使用

鴻蒙系統年底問世具體哪一天&#xff1f;自從華為鴻蒙操作系統被曝光后&#xff0c;大家對鴻蒙操作系統可謂是期待已久&#xff0c;鴻蒙操作系統具體什么時間上線&#xff0c;并沒有具體的時間通知。但有消息稱&#xff0c;“鴻蒙”手機將年底問世&#xff0c;初期主要面向中低…

android怎么設置適配器,Android之自定義實現BaseAdapter(通用適配器三)

在上一篇中&#xff0c;我們說過&#xff0c;在setData中如果有很多控件的話&#xff0c;我們還是要在該方法中寫入很多代碼&#xff0c;為了降低開發的方便性&#xff0c;本次就在此基礎上再一次優化。實現原理是這樣的&#xff0c;每次在setData中都要查找控件&#xff0c;然…

html游戲怎么編輯器,HTML的編輯器使用

使用 Notepad 或 TextEdit 來編寫 HTML可以使用專業的 HTML 編輯器來編輯 HTML&#xff1a;Adobe DreamweaverMicrosoft Expression WebCoffeeCup HTML Editor(推薦學習&#xff1a;HTML入門教程)不過&#xff0c;我們同時推薦使用文本編輯器來學習 HTML&#xff0c;比如 Notep…

html5中如何自動跳轉頁面,實現HTML5上滑跳轉頁面的兩種方法

方法一&#xff1a;jquery方法movePage($(body));function movePage(dom) {var startY, moveY, moveSpave;dom.on("touchstart", function(e) {startY e.originalEvent.touches[0].pageY; return startY;});dom.on("touchmove", function(e) {moveY e.or…

鴻蒙系統hifi,Apple Music將迎來重大更新 HiFi無損音質即將上線?

原標題&#xff1a;Apple Music將迎來重大更新 HiFi無損音質即將上線&#xff1f;前不久有媒體報道稱&#xff0c;蘋果將在當地時間5月18日推出HiFi版AppleMusic服務&#xff0c;新服務將為Apple Music用戶提供無損的流媒體音樂&#xff0c;滿足HiFi用戶對高音質的追求。而在近…

html5語義化標簽 加粗,html5標簽 H5標簽

html>h5文本元素1.文本元素2.加粗文字 b 3.傾斜文字 i 4.刪除文字 del 5.加粗文字2 strong 6.安全換行 wbr~~~ 7.強調 傾斜元素 em 8.刪除線2 s元素9998 9.下劃線 u 10.下劃線2 ins元素 11.小號字體small元素 12.下標 sub&#xff1a;CH4COOH ; 上標sup&#xff1a;20平方米…

華為筆記本會不會用鴻蒙,華為MateBook Pro筆記本為什么不用鴻蒙操作系統HarmonyO?...

頭條上整天就是各種華為啊鴻蒙啊的&#xff0c;搞得好像人人都見過鴻蒙一樣。還是大家以為操作系統就是做個APP或者王者榮耀&#xff1f;據我所知&#xff0c;鴻蒙OS現在我們能看到的&#xff0c;也就是幾張PPT截圖吧&#xff1f;整天動不動&#xff0c;這個為啥不用鴻蒙&#…

html 復選框name值,HTML(5)表單元素以及對各個表單元素的name、value屬性的理解

我在學習表單元素的時候感覺很混亂&#xff0c;特別是 name value這兩個屬性&#xff0c;沒有真正理解它們是干什么的&#xff0c;所以需要梳理一下。HTML表單元素主要有 HTML5新增的表單元素有三個下面梳理一下這些表單元素的用法并指出各元素的name、value屬性含義1. 元素元…

html中一張a4是多少pt,CSS設置A4紙張尺寸

我需要在網絡上模擬A4紙&#xff0c;并允許打印此頁面&#xff0c;因為它在瀏覽器上顯示(特別是Chrome)。我設置元素的大小為21厘米x 29.7厘米&#xff0c;但當我發送打印(或打印預覽)它剪輯我的頁面。HTMLPage 1/2Page 2/2CSSbody {margin: 0;padding: 0;background-color: #F…

html中的異步請求數據格式,解決layui中table異步數據請求不支持自定義返回數據格式的問題...

使用版本 layui-v2.3.0修改&#xff1a;打開layui中table.js源碼在 Class.prototype.pullData 這個方法定義內部//獲得數據Class.prototype.pullData function(curr, loadIndex){var that this,options that.config,request options.request,response options.response,so…

首頁圖標九宮格 html5,html5九宮格布局的網格菜單代碼

特效描述&#xff1a;html5 九宮格布局 網格菜單代碼。今天我們想和大家分享一個九宮格菜單動畫。這個想法的靈感來自于視頻中的效果&#xff0c;html5全屏展開網格布局菜單&#xff0c;點擊全屏背景切換顯示代碼。代碼結構1. 引入CSS2. 引入JS3. HTML代碼Grid MenuarrowdropTo…

html數據摘要算法,js 摘要算法 base64加密解密 以及字符串編碼

js 摘要算法 base64加密解密 unescape()和escape()對字符串進行編碼 encodeURI()和decodeURI()編碼 encodeURIComponent()和decodeURIComponent()編碼base64&#xff1a;雙向加密方式。1.GitHub中下載base64https://github.com/dankogai/js-base642.對應的HTML中調用//加密var …

html中日期格式化函數,JavaScript日期時間格式化函數分享

這個函數經常用到&#xff0c;分享給大家。函數代碼&#xff1a;Date.prototype.format function(format){var o {"M" : this.getMonth()1, //month"d" : this.getDate(), //day"h" : this.getHours(), //hour"m" : this.getMi…

蘋果6怎樣打開html,蘋果iPhone的Safari瀏覽器使用技巧圖解

&#xfeff;  大多數的 iPhone 用戶們都是用的 iOS 系統自帶的 Safari 瀏覽器&#xff0c;不過很多用戶們對 Safari 瀏覽器卻不是很熟悉&#xff0c;因為 Safari 畢竟沒有國產瀏覽器這么動我們&#xff01;這廂腳本之家小編給大家介紹一些 iOS Safari 瀏覽器的一些你所不知道…

華為p9 html尺寸,華為P9的屏幕尺寸是多少?

華為P9的屏幕尺寸是多少華為P9的屏幕尺寸是5.2英寸。針對華為P9的屏幕尺寸是多少的問題&#xff0c;配置方面&#xff0c;華為P9搭載了麒麟955處理器&#xff0c;麒麟955基于臺積電16nm FinFET Plus制程工藝打造&#xff0c;比FinFET擁有更強的性能。架構方面&#xff0c;麒麟9…

美國款游戲計算機,美國一程序員設計計算機游戲 悼念早逝愛子(圖)

據美國《今日》網站4月25日報道&#xff0c;美國科羅拉多州的程序員賴安?格林(Ryan Green)設計了一款叫做“癌癥&#xff1a;那條猛龍”的游戲&#xff0c;以此紀念愛子約耳(Joel)短暫的一生。2010年&#xff0c;1歲的約耳被診斷出患有致命的腦癌&#xff0c;賴安希望游戲玩家…

計算機專業知識是什么范圍,計算機基礎知識考題

計算機技術在我國得到了快速發展&#xff0c;計算機應用范圍越來越廣泛&#xff0c;普及計算機知識已迫在眉睫。那么你對計算機基礎知識了解多少呢?以下是由小編整理關于的內容&#xff0c;希望大家喜歡!1、電子計算機主要是以***B***劃分發展階段的。A、集成電路 B、電子元件…

html json to table,javascript - HTML - Convert json to table - Stack Overflow

Im trying to convert JSON to a table, but it doesnt. Everything seems fine, but I cannot see the values ??in my table.My code that converts JSON to table:$(function() {var my_data ;$.each(JSON.parse(sonuc.response) , function(key, item){my_data ;my_dat…

html中.inner樣式,JavaScript-DOM動態控制Html標簽對象樣式和innerHTML、className屬性

文本1//首先獲取標簽對象var p document.getElementById("text1");//通過對象自帶的style方法設置不同的樣式p.style.backgroundColor "black";p.style.fontSize "20px";//上面是給p標簽設置兩個樣式&#xff0c;背景顏色和字體大小說明&…

北京科技大學計算機碩士,北京科技大學計算機專業碩士只有面授上課嗎

北京科技大學計算機專業碩士比較熱門&#xff0c;目前有意接受北京科技大學計算機專業碩士教育的學員&#xff0c;對其是否只有面授上課還比較疑惑。下文可供大家參考&#xff1a;一、只有面授上課北京科技大學計算機專業碩士只有面授上課&#xff0c;有周末班和集中班兩種上課…