首页 > 其他分享 >CSS float 属性

CSS float 属性

时间:2023-02-25 22:35:10浏览次数:44  
标签:float false 编辑 元素 item 回复 CSS 属性

position

position 指定一个元素在文档中的定位方式,使元素脱离当前的文档流,可以自由地在一定区域内移动。如果上级元素没有 relative,就以窗口作为定位范围,如果上级中有一个元素是 relative,就以它的范围作为最大的定位区域(子绝父相)。

display

display 设置块或者内联元素以及子元素的布局,例如 flex 布局、grid 布局。display 不会让元素脱离文档流,而是改变文档流中元素的排列方式。

float

float 指定一个元素应沿其父元素的左侧或右侧放置,允许该父元素内其他元素,如文本和内联元素环绕它。

简单示例

下面是使用了 float: left 的效果,最直观的是“编辑”和“回复”按钮在同一水平上:

image

下面是没有使用浮动属性的效果,“编辑”和“回复”不在同一水平上:

image

“编辑”和“回复”按钮不在同一个容器下,而是各自处于一个容器中。编辑和回复两个业务可以独立分开,所以编辑了两个组件,但因为按钮不在同一个容器中,就有 GIF2 中上下排序的效果:

image

要强制性让这两个不处于同一个容器里的按钮在同一个水平上,虽然 position 可以做到,但比较难处理定位,而且绝对定位会让元素不占有任何位置,好像是浮在上面的一层。float 虽然也脱离文档流,但是在它最终的位置上还是占据着位置:

image

单纯地脱离文档流还不行,必须要清除浮动效果,不能有流动性,也就是不能让下一个元素围绕着上一个元素:

.clear::after {
  content: "";
  height: 0;
  clear: both;
  display: block;
  visibility: hidden;
}

在结束浮动的节点中添加上面的 clear 就可以取消浮动效果:

image

完整代码:

<style>
  .left {
    float: left;
  }

  .right {
    float: right;
  }

  .clear::after {
    content: "";
    height: 0;
    clear: both;
    display: block;
    visibility: hidden;
  }

  .mb-2 {
    margin-bottom: 10px;
  }
</style>
<body>
  <div id="app">
    <comment class="mb-2" v-for="(item, index) in listing" :key="index" :item="item" />
  </div>
</body>
<script>
  Vue.component("comment", {
    props: ["item"],
    template: `
      <div class="clear">
        <div class="text">{{ item.text }}</div>
        <div>
          <edit-comment :item='item' />
          <repl-comment :item='item' />
        </div>
      </div>
    `
  });

  Vue.component("edit-comment", {
    props: ["item"],
    methods: {
      edit() {
        this.item.isEdit = !this.item.isEdit;
      }
    },
    template: `
      <div class='left'>
        <textarea v-show="!item.isRepl && item.isEdit"></textarea>
        <button v-show="!item.isRepl && !item.isEdit" @click='edit'>编辑</button>
        <div v-show="!item.isRepl && item.isEdit">
          <button @click='item.isEdit = !item.isEdit'>取消编辑</button>
          <button @click='item.isEdit = !item.isEdit'>完成编辑</button>
        </div>
      </div>
    `
  });

  Vue.component("repl-comment", {
    props: ["item"],
    methods: {
      repl() {
        this.item.isRepl = !this.item.isRepl;
      }
    },
    template: `
      <div class='left'>
        <textarea v-show="item.isRepl && !item.isEdit"></textarea>
        <button v-show="!item.isRepl && !item.isEdit" @click='repl'>回复</button>
        <div v-show="item.isRepl && !item.isEdit">
          <button @click='item.isRepl = !item.isRepl'>取消回复</button>
          <button @click='item.isRepl = !item.isRepl'>完成回复</button>
        </div>
      </div>
    `
  });

  const app = new Vue({
    el: "#app",
    data() {
      return {
        listing: [
          {
            isRepl: false,
            isEdit: false,
            text: "Hello1"
          },
          {
            isRepl: false,
            isEdit: false,
            text: "Hello2"
          },
          {
            isRepl: false,
            isEdit: false,
            text: "Hello3"
          }
        ]
      };
    }
  });
</script>

示例的意义

示例中把回复和编辑写作组件,效果上差点意思。这样做的目的是使得两个再逻辑上独立,本来回复和编辑都要走不同的 API,在同一个组件里写代码会变多,这应该属于模块化思想,具体可以阅读:重新思考 Vue 组件的定义

标签:float,false,编辑,元素,item,回复,CSS,属性
From: https://www.cnblogs.com/Himmelbleu/p/17138541.html

相关文章

  • css用户体验
    选择适合的鼠标光标禁用光标cursor:not-allowed;隐藏光标cursor:url('transparent.gif');cursor:none;扩大可点击区域伪元素:button{position:relative;......
  • 【Mybatis】【基础设施】【一】Mybatis源码解析-属性分词器PropertyTokenizer
    1 前言上一节我们在解析settings的时候,说到了分词器PropertyTokenizer,这种东西我理解为框架背后默默付出的辛勤工作者。Mybatis本身可以看作一个舞台,我们可能会看到舞台......
  • CSS
    CSS笔记大纲CSS概述1.产生背景●从HTML被发明开始,样式就以各种形式存在,最初的HTML只包含很少的显示属性。●随着HTML的成长,为了满足页面设计者的要求,HTM......
  • Vue ref属性
    ref属性1、被用来给元素或子组件注册引用信息(id的替代者)2、应用在html标签上获取的是真实DOM元素;应用在组件标签上是组件实例对象vc3、使用方法:(1)打标识:<h1ref="XXX"......
  • Teamcenter在BMIDE中,根据对象不同属性,配置显示不同的图标
    1.制作图标:  2.将图标添加到bmide中通过右键,新建“业务对象图标”    3.新建属性渲染器  4.编辑渲染器xml配置<iconsVersion="1.0"> <primaryI......
  • JS 删除对象中的某个属性
    方法1删除是删除对象的属性没有任何剩菜剩下的唯一真正的方法但它的工作比其“替代”设置慢100倍object[key]=undefinedvarmyObject={"ircEvent":"PRIVMSG",......
  • CSS 中的 :root
    :root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--......
  • Lua字节数组与float互转
    纪念那些在双流工厂奋斗的日夜,防爆表屏项目是一次很成功的实践,包括设计的页面堆栈和跳转机制历史回退机制页面密码保护机制 串口分包机制,运用综合所学来搭建的屏上独......
  • c语言以及高级语言中的float到底是什么以及IEEE754
    对内存里float4字节的好奇初学计算机都要学那个什么二进制十进制什么补码反码那些玩意儿哈,由于最近要做一个单片机往另外一个单片机发数据的需求,直接c语言指针然后float......
  • android stdio中textview控件的属性
    android:id//可以通过此id找到该控件android:layout_width//宽度android:layout_height//高度android:layout_background//设置背景的颜色、图片或是其他文件复制预期图片......