fixed相关知识
-
移动端-弹出键盘和CSS的fixed布局影响输入的解决方案背景:Html5登录表单,但是登录表单下面有内容是固定在页面最底部。这种布局下,当键盘弹出输入时,ios手机上是没问题的,但是在安卓手机上,键盘弹出后,页面底部的内容会挡住form表单。效果如下图:1070064-20170113194459041-2114149852.jpg初步解决思路:①不使用fixed布局,则必然要用到margin等来调整位置,但是这会引起和其他兄弟页面子页面的风格不一致,对此站点内每个页面进行改动势必增加了很大的工作量。②对input输入框进行监控,一旦获取焦点就取消掉底部区域的fixed属性,失去焦点就恢复fixed属性。但是有一个关键问题是:文本框获得焦点未必会弹出键盘!!!我们认为会出现或者消失键盘的时候都可能不工作!!!终极解决办法:css sticky footer布局HTML代码:<div id="wrap"> <div id="main"&nb
-
css table-layout: fixed 设置表格单元格等宽来源:http://itssh.cn/post/926.htmlcss table-layout: fixed 设置表格单元格等宽:<!DOCTYPE> <html> <head> <meta charset="utf-8" /> <title>设置表格单元格等宽</title> <style type="text/css"> /* 使字体在所有设备上都达到最佳的显示 */ html { -m
-
position: fixed在当前视图基于父元素定位今天在工作中遇到这样一个需求,需求如下: 子元素要固定在父元素旁边,当下滑到一定位置的时候,子元素固定在浏览器窗口顶部。 试了一下,fixed只能基于浏览器窗口定位,并不能基于父元素定位,这样满足不了我的需求。 CSS 有三种基本的定位机制:普通流、浮动和绝对定位。 除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。 块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。 行内框
-
【小贴士】虚拟键盘与fixed带给移动端的痛!前言今天来公司的主要目的就是研究虚拟键盘与fixed的问题,期间因为同事问起闭包与事件委托(阻止冒泡)相关问题,便穿插了一篇别的:【小贴士】工作中的”闭包“与事件委托的”阻止冒泡“,有兴趣的朋友可以去看看,因为首页只能放一篇,这个就略去了现在回到主要研究点,首先在移动端我们点击文本框后会出现一个虚拟键盘, 虚拟键盘让页面可视区域得到了充分利用,但是也带来了一些问题问题源头移动端虚拟键盘出现的条件是:文本框(文本类)获得焦点但是文本框获得焦点未必会弹出键盘!!!收起虚拟键盘的条件是:文本框失焦PS:总而言之,我们认为会出现或者消失虚拟键盘的时候都可能不工作在移动设备上,如果文本框在上方,点击不会有什么问题:在设备的最下面的话,就有所不同了,整个块会上移,以将input区域显示出来这个时候几个棘手的问题就出现了:① 虚拟键盘的出现对页面来说是不可知的,这句话的理解是:没有键盘出现事件,没有办法获取键盘高度② 键盘是“贴”在了viewport上,表面上不会对dom产生“任何”影响,但是这个时候一些定位元素的表现却
fixed相关课程
-
oeasy教你玩转css禅意花园 本课程使用css设计领域最经典的例子禅意花园来学习css实战,36个设计让您彻底了解css的方方面面。从设计入手到精通界面,是成为优秀网页设计师的快速路径。
讲师:Oeasy 初级 47891人正在学习
fixed相关教程
- 2.2自定义登录弹窗组件 2.2.1 在 <template > 标签中添加组件的页面结构代码<template> <view> <view class="modal-mask"></view> <view class="modal-dialog"> <view class="modal-content"> <p>慕课网wiki</p> </view> <button>授权登录</button> </view> </view></template>2.2.2 在 <style> 标签中添加组件样式代码<style>.modal-mask { width: 100%; height: 100%; position: fixed; top: 0; left: 0; background: black; opacity: 0.5; z-index: 9000;}.modal-dialog { width: 560rpx; position: fixed; z-index: 9999; background: #ffffff; margin: -150rpx 95rpx; border-radius: 16rpx;}.modal-content { display: flex; padding: 10rpx 53rpx 50rpx 53rpx; font-size: 32rpx; justify-content: center;}button { background:#feb600;}</style>该组件我们只定义了页面结构代码和样式代码,页面逻辑会在组件引用的时候定义,所以没有在 <script> 标签中定义逻辑代码,这个根据实际开发需求来就可以了。
- 1.2 网页中的 position position,英文较好的同学们或许早已明白,它的中文译为位置。在网页设计中,它是很多元素都有的一个属性,那么这个属性有哪些可能的值?这一点我们要有个基本的认知:static首先,我们来了解它的默认值 static。static 是静态的,静止的意思。所有支持 position 属性的 HTML 元素在一上来的属性值都是这个值 static。它是一个默认值,在网页设计中可不是说这个元素的位置是静止的,而是说明这个元素是没有定位的。 元素会按照它不设置任何定位的时候的模样展示。具体的模样在这里不做详细说明,后面我们会有更深入的课程讲解。absolute其次,我们来看几个position属性常见的取值。第一个是 absolute ,它的意思是绝对定位,当一个元素的 position 属性的值为 absolute 的时候,意味着它是一个采用绝对定位的元素。 也就是我们本节1.1 中描述的第二种定位方式。大多数情况下,这种设置下元素的位置是通过上,下,左,右属性进行的定位的。fixed第二个常见的值就是 fixed ,当元素的 position 属性被赋予 fixed 的值后,元素和 absolute 一样,也是一个绝对定位的元素。定位方式也完全一致,即通过上下左右来实现自己的定位。但同学们肯定会有疑问:那么 absolute 和 fixed 两种设置有什么区别呢。这里就要重点提一下:二者的区别是在定位的时候参照的东西不同。 absolute 定位的方式是相对于 static 定位以外的第一个父元素进行定位的。而 fixed 指的是相对于浏览器窗口进行的定位。但同学们仍旧不要忘了它们都是绝对定位的方式。relative第三个常见的值就是 relative ,这个是我们第一个见到的相对定位取值吧,也就是 1.1 中描述的第一种定位方式。这种定位的方式呢,往往是相对于正常位置去定位,也会用到上下左右来辅助定位。好了,以上的介绍呢就是我们在这个小节中关于 position 定位的介绍。由于多数是给大家总结干货,就少了些详细的内容,大家如果想今后学习更详细的内容,请大家去相关标准的官网去下载相应的文档,那里面会有最全面,最标准的介绍。同时在这里,老师也要提醒大家,官方文档固然官方,但毕竟学习的出,远大于学习的入,大家做出来的样式才算大家所学,文档上的知识没有必要逼迫自己填鸭式全部记住,也不可能记住。把文档当工具,才是学习这一门学问的正常现象。
- 2.1 grep 分类 Unix 的 grep 家族包括 grep、egrep 和 fgrep。egrep 和 fgrep 的命令跟 grep 只有很小不同。egrep 是 grep 的扩展,其支持更多 re 元字符,和扩展正则表达式等。fgrep 就是 fixed grep 或 fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示其自身的字面意义,不再特殊。linux 使用 GNU 版本的 grep。它功能更强,可以通过 - G、-E、-F 命令行选项来使用 egrep 和 fgrep 的功能。
- 4. 非空断言 ! 如果编译器不能够去除 null 或 undefined,可以使用非空断言 ! 手动去除。function fixed(name: string | null): string { function postfix(epithet: string) { return name!.charAt(0) + '. the ' + epithet; // name 被断言为非空 } name = name || "Bob" return postfix("great")}代码解释:第 2 行,postfix() 是一个嵌套函数,因为编译器无法去除嵌套函数的 null (除非是立即调用的函数表达式),所以 TypeScript 推断第 3 行的 name 可能为空。第 5 行,而 name = name || "Bob" 这行代码已经明确了 name 不为空,所以可以直接给 name 断言为非空(第 3 行)。
- 7. 编写列表页面(views/list.vue) <template> <div> <el-table class="el-table" :data="todoList" border style="width: 100%" :row-class-name="tableRowClassName" > <el-table-column fixed prop="name" label="事项名称" width="150"> </el-table-column> <el-table-column prop="date" label="事项截止时间" width="120"> </el-table-column> <el-table-column prop="type" label="事项类型" width="120"> </el-table-column> <el-table-column prop="urgent" label="是否紧急" width="120"> <template slot-scope="scope"> <span>{{ scope.row.urgent | urgentText }}</span> </template> </el-table-column> <el-table-column prop="content" label="事项详情"></el-table-column> <el-table-column label="操作" width="160"> <template slot-scope="scope"> <el-button @click="handleDelete(scope.$index)" type="danger" size="small" >删除</el-button > <el-button type="primary" size="small" @click="handleComplete(scope.$index)" :disabled="scope.row.isComplete === 1" >完成</el-button > </template> </el-table-column> </el-table> <div style="text-align:left"> 总共:{{ todoList.length }} 个任务。 已完成:{{ count(1) }} 个任务。未完成:{{ count(0) }} 个任务。 </div> </div></template><script>import { mapGetters, mapMutations } from "vuex";import { COMPLETE_TODO, DEL_TODO } from "../store/types";export default { methods: { ...mapMutations([COMPLETE_TODO, DEL_TODO]), handleDelete(index) { this.DEL_TODO({ index }); }, handleComplete(index) { this.COMPLETE_TODO({ index }); }, tableRowClassName({ row }) { if (row.isComplete === 1) { return "complete-row"; } return ""; } }, computed: { ...mapGetters(["todoList", "count"]) }, filters: { urgentText(value) { if (value === 0) { return "紧急"; } return "非紧急"; } }, data() { return { tableData: [] }; }};</script><style>.el-table .complete-row { background: #f0f9eb;}</style>
- 4. 不使用 form 提交表单 不使用 form 标签来提交表单,通常都是使用 AJAX 进行数据交互的情况。这个时候就不需要拦截 form 的提交行为了。<style> h3 {margin-top: 0;color: #4caf50;} .login {width: 300px;padding: 32px;box-shadow: 2px 2px 10px rgba(0, 0, 0, .1);position: fixed;top: 40%;left: 50%;transform: translate(-50%, -50%);} .form-item {display: flex;margin-bottom: 16px;border-bottom: 1px solid #ccc;} .form-item .title {width: 70px;color: #666;font-size: 14px;} .form-item .content {flex: 1;} .form-item .content input {width: 100%;border: 0 none;padding: 2px 8px;outline: none;font-size: 16px;} .login-btn {width: 100%;border: 0 none;background-color: #4caf50;color: white;margin-top: 16px;outline: none;height: 32px;} .login-btn:active {background-color: #2da050;}</style><div class="login"> <h3>登入</h3> <label class="form-item"> <div class="title">用户名</div> <div class="content"> <input autocomplete="off" id="account" class="account" name="account" type="text"> </div> </label> <label class="form-item"> <div class="title">密码</div> <div class="content"> <input autocomplete="off" name="pwd" type="password"> </div> </label> <div> <button class="login-btn" type="button">登入</button> </div></div><script>var loginBtn = document.querySelector('.login-btn');var pwdEle = document.querySelector('[name="pwd"]');function login(cb) { // 假装登入花了 1 秒 setTimeout(function() { alert('登入成功'); cb && cb(); }, 1000);}loginBtn.addEventListener('click', function() { var pwd = pwdEle.value; if (pwd.length < 6 || pwd.length > 16) { alert('密码长度 6-16'); return; } login(function() { window.location.href = 'https://imooc.com'; });});</script>使用这种方式,就可以自主控制流程,不需要再考虑 form 标签的行为。
fixed相关搜索
-
face
fade
fadein
fadeout
fadeto
fail
family
fastcgi
fastjson
fault
fclose
fdisk
feed
fetch
ff浏览器
fgets
fields
fieldset
fighting
figure