前端笔记html+css+vue, 页面布局、定位、字体背景等和一些常用方法

目录

弹性布局:

定位:

overflow溢出:

表单:

vue数据存取:

vuex store 全局数据:

vux弹窗,软提示,硬提示

ElementUI MessageBox 弹框简单用法

背景设置(简单,记录下)

字体设置

html div 禁止点击

Js将json字符串转数组

Js全局的JSON, json字符串转json

html中自定义添加属性并获取属性值 


弹性布局:

所有主流浏览器都支持 display 属性

display:inline // 默认,显示为内联元素不带换行符
    ----none // 此元素不会被显示
    ----block // 显示为块级元素带有换行符
    ----inline-block // 行内块元素
    ----list-item // 此元素会作为列表显示
    ----table // 作为块级表格来显示,表格前后带有换行符
    ----inline-table // 作为内联表格来显示,表格前后没有换行符
    ----inherit // 规定应该从父元素继承 display 属性的值
    ----    ... ... // 省略
display: flex;    ----// 弹性布局 盒子,使用后浮动失效 所有浏览器支持

1、flex-direction:row; 沿水平主轴让元素从左向右排列
   flex-direction:column; 让元素沿垂直主轴从上到下垂直排列

2、flex-direction:row-reverse;沿水平主轴让元素从右向左排列

3、flex-wrap: nowrap; (默认)元素不换行// 会挤变形
   flex-wrap: wrap; 元素换行

4、justify-content:
       justify-content:flex-start |// 从左边(或者上)开始
       flex-end | // 从右边(或者下)排列
       center | // 居中对齐,从左右或上下排列
       space-between | // 周围留白元素之间两侧的间隔相等
       space-around// 外侧,两端也留白

5、align-items:
     flex-start| // 靠上对齐
     flex-end|   // 靠下对齐
     center|     // 上下居中对齐,
     space-between|  //
     space-around|
     stretch| // 默认值。元素被拉伸以适应容器
     baseline| // 行内轴与侧轴为同一条时与'flex-start'等效,其它情况下靠上对齐

6、align-content
    align-content: flex-start; 元素位于容器的开头。各行向弹性盒容器的起始位置堆叠
    align-content: flex-end; 元素位于容器的结尾。各行向弹性盒容器的结尾位置堆叠
    align-content: stretch; 元素位于容器的中心。各行向弹性盒容器的中间位置堆叠
    align-content: center; 元素被拉伸以适应容器。如果剩余的空间是负数,等效于'flex-start'。
    align-content: space-between;元素位于各行之间留有空白的容器内。各行平均分布。
    align-content: space-around;元素位于各行之前、之间、之后都留有空白的容器内。各行平均分布,
两端保留子元素与子元素之间间距大小的一半。如果剩余的空间是负数或弹性盒容器中只有一行,该值等效
于'center'。





如果不想让子元素的发生伸缩 则可以在子元素中设置样式: flex-shrink: 0

关于主轴方向:
在父元素中设置 flex-direction的值为 column 为y轴为主轴  默认 row 为 x轴为主轴

flex-grow属性用来控制子元素沿主轴方向的大小。它的默认值是0,若将某个子元素的值设为大于0的数,
那么它就会变得比同行的其他元素更宽。

flex子元素上的属性(如果想让哪个子元素位置向前靠拢,则可以控制order的值越小则越靠前)

定位:

position定位
    static    // 默认值。没有定位
    absolute    //生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位
    relative    //生成相对定位的元素,相对于其正常位置进行定位
    fixed      //生成绝对定位的元素,相对于浏览器窗口进行定位

absolute 绝对定位  针对于父级 position 非static 的 元素进行定位
            position: absolute;top: 90px"

relative 是针对于 自己原有位置 进行定位 ,当其移开后 原有位置依然被占据 其他元素则不能占据
            position: relative;top:50px"

fixed   固定位置 针对的浏览器窗口
            position: fixed;top: 50px;left: 100px"

overflow溢出:

overflow:定义溢出元素内容区的内容会如何处理

属性	描述
visible	默认值。内容不会被修剪,会呈现在元素框之外
hidden	内容会被修剪,并且其余内容是不可见的
scroll	内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容
auto	如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容

表单:

单行文本框: <input name="user" type="text" id="user" value="请输入英文字母" />
密码域:     <input type="password" name="textfield" id="textfield" />
多行文本框: <textarea name="textarea" id="textarea" cols="45" rows="5"></textarea>

复选框:     <input name="checkbox" type="checkbox" id="checkbox" checked="checked" />
              <input type="checkbox" name="checkbox2" id="checkbox2" />
            <input type="checkbox" name="checkbox3" id="checkbox3" />

单选按钮:   <input name="radio" type="radio" id="radio" value="radio"  checked="checked" />
            <input type="radio" name="radio2" id="radio2" value="radio2" />

下拉菜单:   <select name="select" id="select">
                <option value="1">UI设计</option>
                <option value="2">前端工程师</option>
                <option value="3">网站美工</option>
            </select>

列表:       <select name="select2" size="3" id="select2">
                <option value="1">北京</option>
                <option value="2">上海</option>
                <option value="3">广州</option>
             </select>

文件域:      <input type="file" name="photo" id="photo" />
提交按钮:    <input type="submit" name="submit" id="submit" value="提交" />
重置按钮:    <input type="reset" name="button" id="button" value="重置" />
图像域:      <input type="image" name="imageField" id="imageField" src="tj.jpg" />
隐藏域:      <input type="hidden" name="hiddenField" id="hiddenField" />
普通按钮:    <input type="button" name="button2" id="button2" value="按钮" />


图像过分拖拽影响布局
1、添加resize:none;
2、添加max-height,max-width

type 元素类型:text, password, checkbox, radio, submit, reset, file, hidden, image, button
		
size
	如果type为text或password,则表单元素的大小以字符为单位。
	对于其他输入类型,宽度以像素为单位

maxlength
	指定可在text或password元素中输入的最大字符数。默认为无限大




table:
1、cellpadding: 单元格边距 
2、cellspacing :单元格间距
3、colspan : 列跨度  左右
4、rowspan : 行跨度 上下,可选:thead、tbody、tfoot

<td colspan="2" align="center"></td>

vue数据存取:

localStorage 缓存

    localStorage.setItem('key',value); // 存(普通类型)
    localStorage.setItem('key',JSON.stringify(object));// 存(对象)

    JSON.parse(localStorage.getItem("key"); // 取(对象)
    localStorage.getItem("key"); // 取

    localStorage.removeItem('key'); // 删除
    localStorage.clear(); // 清空所有

vuex store 全局数据:

嵌套app使用localStorage 需要app开通权限,vuex store不受影响

cnpm install --save vuex    //安装


store.index.js

import Vuex from 'vuex'
Vue.use(Vuex)
const store =new Vuex.Store({
state:{
    count:0,
    list:{}
},             // 引入 main.js

//改变state中的count数据、

mutations: {

    increment(state){       //调用     this.$store.commit("increment", "");increment方法名
        state.count++;
    },
    saveList(state, data) { //调用     this.$store.commit("saveList", "value");
      state.list = data     //取出     this.$store.state.list;
    },

}

})

vux弹窗,软提示,硬提示

安装vux
npm install vux --save
npm install vux-loader --save-dev
npm install less less-loader --save-dev
对build文件夹下的webpack.base.conf.js 文件进行配置,代码放下文

loading / toast / alert全局使用

main.js

import { LoadingPlugin, ToastPlugin, AlertPlugin } from 'vux'
Vue.use(LoadingPlugin);
Vue.use(ToastPlugin,{position: 'top'});
Vue.use(AlertPlugin);


使用
// LoadingPlugin, 加载提示
this.$vux.loading.show({
  text: '加载中...'
}); 

this.$vux.loading.hide();// 隐藏
 


// ToastPlugin, 软提示,text内容,支持html
this.$vux.toast.show({
  text: '购买成功'
})

this.$vux.toast.text('hello', 'top'); //显示文字 top 顶部,middle 中部,bottom 底部

this.$vux.toast.hide(); // 隐藏
 


// AlertPlugin, 硬提示
this.$vux.alert.show({
  title: '提交成功',
  content: '您的申请已经提交,处理结果将在三日之内发送到您的手机',
  onShow () {
    console.log('onShow'); // 提示时执行
  },
  onHide () {
    console.log('onHide'); // 关闭时执行
  }
})

this.$vux.alert.hide(); // 隐藏



import { ConfirmPlugin } from 'vux';
Vue.use(ConfirmPlugin);

this.$vux.confirm.show({
  title: '警告',
  content: '该网站不安全,是否继续访问',
  // 组件除show外的属性
  onCancel : () => {
    console.log("onCancel") //取消执行
  },
  onConfirm : () => {
    console.log("onConfirm") //确定执行
  }
});

ElementUI MessageBox 弹框简单用法

MessageBox:
 
       this.$confirm(
          "<div style='font-size: 1rem;'>您确认要重置密码吗?</div><div style='font-size: 0.3rem;'>重置密码之后,用户将自动退出登录,默认密码为000000</div>" ,
          "系统提示", {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              dangerouslyUseHTMLString: true,//属性设置为true,message 就会被当作HTML片段处理
              type: 'warning',//消息类型,用于显示图标success/ info/ warning/ error
              center: true //将 center 设置为 true 即可开启居中布局
          }).then(_ => {
            console.log("确认");
            // done();
          })
          .catch(_ => {
            console.log("取消");
          });

文档地址:https://element.eleme.cn/#/zh-CN/component/message-box


Dialog 对话框:

<!-- Form -->
<el-button type="text" @click="dialogFormVisible = true">打开嵌套表单的 Dialog</el-button>

<el-dialog title="收货地址" :visible.sync="dialogFormVisible" center>
  <el-form :model="form">
    <el-form-item label="活动名称" :label-width="formLabelWidth">
      <el-input v-model="form.name" autocomplete="off"></el-input>
    </el-form-item>
    <el-form-item label="活动区域" :label-width="formLabelWidth">
      <el-select v-model="form.region" placeholder="请选择活动区域">
        <el-option label="区域一" value="shanghai"></el-option>
        <el-option label="区域二" value="beijing"></el-option>
      </el-select>
    </el-form-item>
  </el-form>
  <div slot="footer" class="dialog-footer">
    <el-button @click="dialogFormVisible = false">取 消</el-button>
    <el-button type="primary" @click="dialogFormVisible = false">确 定</el-button>
  </div>
</el-dialog>

// 将center设置为true即可使标题和底部居中-boolean
// visible	是否显示 Dialog,支持 .sync 修饰符 -boolean
// width	Dialog 的宽度 -String
// fullscreen	是否为全屏 Dialog -boolean
// modal	是否需要遮罩层	-boolean

文档地址:https://element.eleme.cn/#/zh-CN/component/dialog

效果:

webpack.base.conf.js

'use strict'
const path = require('path')
const utils = require('./utils')
const config = require('../config')
const vueLoaderConfig = require('./vue-loader.conf')
const webpack = require("webpack")

const themeConfig={
  name: 'less-theme',
  path: 'src/assets/theme.less'
};

function resolve (dir) {
  return path.join(__dirname, '..', dir)
}

const vuxLoader = require('vux-loader')

const webpackConfig = {
  context: path.resolve(__dirname, '../'),
  entry: {
    'babel-polyfill': 'babel-polyfill',
    app: './src/main.js'
  },  
  output: {
    path: config.build.assetsRoot,
    filename: '[name].js',
    publicPath: process.env.NODE_ENV === 'production'
      ? config.build.assetsPublicPath
      : config.dev.assetsPublicPath
  },
  resolve: {
    extensions: ['.js', '.vue', '.json', 'less'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
	    '@static': resolve('static'),
    }
  },
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: vueLoaderConfig
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')],
        options:{
          plugins:['syntax-dynamic-import']
        },
      },
      {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('img/[name].[hash:7].[ext]')
        }
      },
      {
        test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('media/[name].[hash:7].[ext]')
        }
      },
      {
        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000,
          name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
        },
        
      }
    ],
  },
  plugins: [
    new webpack.optimize.CommonsChunkPlugin('common.js'),
    new webpack.ProvidePlugin({
      jQuery: "jquery",
      $: "jquery"
    })
  ],
  node: {
    // prevent webpack from injecting useless setImmediate polyfill because Vue
    // source contains it (although only uses it if it's native).
    setImmediate: false,
    // prevent webpack from injecting mocks to Node native modules
    // that does not make sense for the client
    dgram: 'empty',
    fs: 'empty',
    net: 'empty',
    tls: 'empty',
    child_process: 'empty'
  },
  externals:{
    "BMap":"BMap",
    "wx": "wx",
  },
}

module.exports = vuxLoader.merge(webpackConfig, { plugins: ['vux-ui',themeConfig] })

三级导航:https://www.jianshu.com/p/464c7eae7f70
icon: https://www.runoob.com/font-awesome/fontawesome-icons-chart.html

背景设置(简单,记录下)

    /* 加载背景图 */
    background: url("../static/images/index/backImg.jpg") no-repeat;
    /* 背景图垂直、水平均居中 */
    background-position: center center;
    /* 当内容高度大于图片高度时,背景图像的位置相对于viewport固定 */
    background-attachment: fixed;
    /* 让背景图基于容器大小伸缩 */
    background-size: cover;
    /* 设置背景颜色,背景图加载过程中会显示背景色 */
  background-color: rgba(41, 50, 39, 1);



url(images/beijing.png)——图片路径的位置;
no-repeat—— 图片不重复;
center 0px——center是距离页面左边的定位,0px是距离页面上面的定位;

background-position: center 0——就是图片的定位,同上;

background-size: cover;——把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。背景图像的某些部分也许无法显示在背景定位区域中;

min-height: 100vh;——视窗的高度,“视区”所指为浏览器内部的可视区域大小,即window.innerWidth/ window.innerHeight大小

字体设置

line-height:文字在此行的高度中垂直居中
line-height:
    2em;文字内容占2倍行高,
    em是参照当前文字的实际文字大小
    需要设置字体大小,否则为默认高度,line-height: 98px

text-indent: 2em;——首行缩进两个字符
font-weight: 700;——文字粗细,正常粗细400,加粗700
font-style:italic;——文字倾斜
text-decoration: underline;——下划线 ;line-through——删除线
letter-spacing: 5px;——每个字符间的横向间距
text-align: center;  定义文字水平位置

border: 4px solid green;
font-size: 20px;

html div 禁止点击

disabled属性针对的是输入框下拉之类的, 有时候点击事件绑定在div上, 这时候disabled就不起效果了

pointer-events阻止元素成为鼠标事件

设置样式: style="pointer-events: none;"

/* Keyword values */
pointer-events: auto;
pointer-events: none;
pointer-events: visiblePainted; /* SVG only */
pointer-events: visibleFill;    /* SVG only */
pointer-events: visibleStroke;  /* SVG only */
pointer-events: visible;        /* SVG only */
pointer-events: painted;        /* SVG only */
pointer-events: fill;           /* SVG only */
pointer-events: stroke;         /* SVG only */
pointer-events: all;            /* SVG only */

/* Global values */
pointer-events: inherit;
pointer-events: initial;
pointer-events: unset;
  • auto与pointer-events属性未指定时的表现效果相同,对于SVG内容,该值与visiblePainted效果相同
  • none元素永远不会成为鼠标事件的target。但是,当其后代元素的pointer-events属性指定其他值时,鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶段触发父元素的事件侦听器
  • /* SVG only */  只适用于SVG, 对于浏览器来说,只有auto和none两个值可用

Js将json字符串转数组

    var jsonstr = "[{'name':'xiaoming','age':'11'},{'name':'zhangsan','age':'18'}]";
    var array = eval(jsonstr);
    console.log(array);

 

Js全局的JSON, json字符串转json

需严格遵守JSON规范,如属性都需用引号引起来

JSON.parse(xtendJson)

html中自定义添加属性并获取属性值 

<div data-index_id="123">这是一个div元素</div>


var index_id = $("div").data("index_id");
console.log(index_id); // 输出 123


其他, 点击事件中获取其标签属性
$('.table tbody td').click(function (event) {
    alert('你点击了单元格:' + $(this).text());
    console.log(event.target.getAttribute("title"));
});

未完待续

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
学习网站HTMLCSS、JS、Vue是为了加强对网站开发相关技术的掌握和实践能力。在学习HTML时,我们学会了如何使用HTML标签来描述网页的结构和内容,以及如何设置网页的样式和布局CSS教会了我们如何通过选择器和属性来修饰HTML元素,实现各种各样的样式效果和页面布局。JS则是用来为网页添加动态交互功能的编程语言,通过操作DOM、处理事件、实现异步请求等,使网页与用户之间产生更好的互动体验。 当学习到Vue时,我们可以将其看作是一个JS框架,它专注于构建用户界面。Vue结合了HTMLCSS和JS的优点,提供了一种数据驱动的开发方式,可以更轻松地构建复杂的交互式网页应用程序。通过Vue的响应式数据绑定、组件化开发和虚拟DOM等特性,我们能够更高效地管理和渲染网页中的各个组件,实现页面局部刷新的效果,提升用户体验。 在学习这些技术的过程中,我们可以通过在线学习网站或教程来获取知识,如MDN、W3School等,它们提供了详细的文档和示例代码,帮助我们理解和应用相关的知识点。另外,还可以通过实践来巩固学习成果,例如完成一些作业或小项目,通过自己动手的方式来实践和巩固所学的知识,提升自己的实践能力。 总的来说,学习网站HTMLCSS、JS、Vue是为了在网站开发中掌握相关技术与工具,通过理论学习和实践操作相结合,来提升自己的前端开发能力,实现更加高质量的网页设计和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑶山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值