【问题标题】:Cropping Span at certain width一定宽度的裁剪跨度
【发布时间】:2016-07-27 14:01:51
【问题描述】:

为了使我的菜单具有响应性,我想在达到一定宽度时裁剪一个文本。这是我到目前为止所拥有的:

  <span data-ng-if="vm.getContext().contextType === 'ContextA'">
        <span data-ng-bind="vm.getActiveContext().userName | limitTo: 7"></span>
        <span data-ng-if="vm.getActiveContext().userName.length > 7">...</span>
        <i class="fa fa-arrow-right"></i>
        <span data-ng-bind="vm.getActiveContext().groupName | limitTo: 7"></span>
         <span data-ng-if="vm.getActiveContext().groupName.length > 7">...</span>
        <span
        data-ng-if="vm.getActiveContext().city">, </span><span
        data-ng-bind="vm.getActiveContext().city"></span>
    </span>

问题是,城市价值很重要,不应该被裁剪。但用户名和组名应裁剪为例如 900 像素。我该如何做到这一点?

或者有什么替代方法?我知道文本溢出等,但由于这些是组合跨度,我无法让它正常工作。

【问题讨论】:

  • display:flex 或 table 将允许使用 overflow:hidden 和/或 flex 属性,您的代码对设置演示没有太大帮助,我们只得到点并且不知道样式已申请

标签: javascript html css angularjs twitter-bootstrap


【解决方案1】:

如果您需要让应用具有响应性,您可以定义一个服务,该服务将保持当前视口的尺寸。例如:

// Service to hold current dimensions
function dimensionsService($window) {
  // Defining object, that holds dimensions
  var dimensions = {
    width: $window.innerWidth,
    height: $window.innerHeight,
  }

  // Returning dimensions object to the consumers
  return {
    dimensions: dimensions,
  }
}
dimensionsService.$inject = ['$window'];

然后您需要将此服务注入任何消费者,这些消费者需要一些根据视口大小执行一些操作或计算。例如:

function SampleController(service) {
  var vm = this;
  vm.dimensions = service.dimensions;
  vm.cropFilterLength = vm.dimensions.width < 900 ? 5 : 9;

}
SampleController.$inject = ['dimensionsService']

【讨论】:

    【解决方案2】:

    您可以为此使用media query

    @media screen and (max-width: 900px){
    }
    

    这意味着对于大于 900 像素的屏幕,将应用的 CSS 属性是您在 CSS 上默认拥有的属性,但对于小于 900 像素的屏幕,将应用的 CSS 属性是你在这个范围内。

    因此,例如,如果您为user 跨度设置一个ID,为groupname 跨度设置一个,您可以按如下方式进行:

    @media screen and (max-width: 900px){
        #user{
           display: none; //Or whatever you want.
        }
        #groupname{
           display: none; //Or whatever you want.
        }
    }
    

    【讨论】:

    • 我也是这么想的。但这会隐藏完整的字符串,我只想裁剪它。
    • @user5417542 是的,这将完全隐藏它。你说的作物是什么意思?你能展示一张关于预期行为的图片吗?也许您可以使用width: whatever 使跨度更小,或者使用font-size: whatever 使文本更小。您可以在很多选项中进行选择,但我猜不出您在寻找什么。这就是为什么我现在放display: none
    猜你喜欢
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    相关资源
    最近更新 更多