首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在calc中使用n

在calc中使用n
EN

Stack Overflow用户
提问于 2016-07-27 15:14:40
回答 3查看 11.9K关注 0票数 17

可以在calc表达式中使用n个变量吗?

例如:

代码语言:javascript
复制
.child:nth-child(n) {
   margin-left: calc(n * 46px);
}

我的守则:

代码语言:javascript
复制
<div class="share-buttons">
  <div class="share-button-main"></div>
  <div class="share-button share-facebook">
    <img src="facebook.png" alt="" />
  </div>
  <div class="share-button share-whatsapp">
    <img src="whatsapp.png" alt="" />
  </div>
  <div class="share-button share-email">
    <img src="email.png" alt="" />
  </div>
  <div class="share-button share-sms">
    <img src="sms.png" alt="" />
  </div>
</div>

CSS (Sass):

代码语言:javascript
复制
.share-buttons {
  position: relative;
    display: flex;

  .share-button-main {
    width: 46px;
    height: 46px;
    z-index: 2;
    cursor: pointer;
    content: url('share-menu-share-closed.png')
  }

  .share-button {
    position: absolute;
    top: 0;
    left: 0;
    width: 46px;
    height: 46px;
    z-index: 1;
    transition: all .3s ease;
    opacity: 0;
  }

  &.open {
    .share-button-main {
      content: url('share-menu-share-opened.png')
    }
    .share-button {
      opacity: 1;
    }

    .share-facebook {
      left: 56px;
    }

    .share-whatsapp {
      left: 112px;
    }

    .share-email {
      left: 168px;
    }

    .share-sms {
      left: 224px;
    }
  }

    img {
        width: 46px;
        height: 46px;
    }
}

Javascript (JQuery):

代码语言:javascript
复制
$('.share-button-main').click(function() {
  $('.share-buttons').toggleClass('open');
});

我基本上是在尝试实现菜单的动态打开效果,所以如果我添加或删除元素,它仍然可以工作(不像现在,我分别设置每个div的左)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-27 15:18:39

你不能,就像@SLaks提到的。但是,这可以通过将下一个元素放置在前一个元素中来解决。

用div看:

代码语言:javascript
复制
div {
  margin-left: 46px
}
代码语言:javascript
复制
<div>test
  <div>test
    <div>test
      <div>test</div>
    </div>
  </div>
</div>

或者,使用jQuery。

代码语言:javascript
复制
var margin=0;
$("div").each(function(){
  $(this).css("margin-left",margin+=46)
})
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>
<div>text</div>

票数 3
EN

Stack Overflow用户

发布于 2016-07-27 15:16:06

不,你不能那样做。

counter特性几乎可以做到这一点,但它也不能与calc()一起使用。

票数 4
EN

Stack Overflow用户

发布于 2020-06-17 07:52:32

不完全是你想要的,但是如果你知道元素的数量,你可以在scss上实现类似的效果。请记住,这将生成大量的css:

代码语言:javascript
复制
@for $i from 1 through 7 {
    &:nth-child(#{$i}) {
      margin-left: calc(#{$i} * 46px);
    }
  }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38617025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档