2012-08-30 40 views
1

我正在构建必须在“小”屏幕(1024 * 768)或更高分辨率屏幕上工作的应用程序。调整媒体查询不起作用的项目大小

我在应用程序中有一个页面,有一些项目呈现在两列。但在“小”屏幕上,项目的宽度太大而不能保持良好的布局,所以我想将列数减少到一个。该列使用<ul>构建,其中包含<li>float:left属性(这实际上是一个jQuery可排序插件输出)。

我的网页行为是允许用户在“源”列表和“目标”列表之间拖放项目以选择项目(这是可行的,如果可以帮助,我可以粘贴代码) 。

要解决此问题,我尝试设置媒体查询。

在我的CSS文件,我有:

.sourceItems, .targetItems { 
    list-style-type: none; 
    float: left; 
    margin: 0; 
    padding: 0; 
    margin-right: 10px; 
    background: #eee; 
    padding: 5px; 
    border: solid 1px black; 
    height: 400px; 
    overflow: auto; 
} 

.sourceItems { 
    width: 530px; 
} 

.targetItems { 
    width: 280px; 
} 

    .sourceItems li, .targetItems li { 
     border: solid 1px black; 
     float: left; 
     margin: 4px; 
     padding: 4px; 
     width: 220px; 
     min-height: 10px; 
     cursor: move; 
     background-image: url('/_layouts/images/personresult.gif') !important; 
     background-repeat: no-repeat !important; 
     padding-left: 20px; 
     background-color: #DFEFFC; 
     background-position: left center !important; 
    } 

     .sourceItems li.user, .targetItems li.user { 
     } 

     .sourceItems li.entity, .targetItems li.entity { 
      background-position: left center; 
      border: solid 1px black; 
      float: left; 
      margin: 4px; 
      padding: 4px; 
      width: 200px; 
      background-image: url('/_layouts/images/peopletitle.png') !important; 
      font-size: 1.1em; 
      height: 50px; 
      cursor: move; 
      padding-left: 40px; 
      background-color: #CCFF99; 
      background-repeat: no-repeat !important; 
      vertical-align: middle; 
     } 

@media screen and (max-width: 1024) { 
    .sourceItems { 
     width: 200px; 
    } 

    .targetItems { 
     width: 200px; 
    } 

     .sourceItems li, .targetItems li { 
      margin: 2px; 
      padding: 2px; 
      width: 180px; 
      min-height: 10px; 
      background-image: url('/_layouts/images/personresult.gif') !important; 
      -moz-background-size: 50%; 
      -o-background-size: 50%; 
      -webkit-background-size: 50%; 
      background-size: 50%; 
      background-repeat: no-repeat !important; 
      padding-left: 10px; 
      font-size: 1.1em; 
     } 

      .sourceItems li.user, .targetItems li.user { 
      } 

      .sourceItems li.entity, .targetItems li.entity { 
       -moz-background-size: 50%; 
       -o-background-size: 50%; 
       -webkit-background-size: 50%; 
       background-size: 50%; 
       margin: 2px; 
       padding: 2px; 
       width: 180px; 
       background-image: url('/_layouts/images/peopletitle.png') !important; 
       font-size: 1.1em; 
       height: 30px; 
       padding-left: 20px; 
      } 
} 

然而,这使得没有区别时,页面加载(元素始终是两列大)。

不知道,如果它可以帮助,但这里是DOM的转储(从IE开发者工具):

<UL class="sourceItems droptrue ui-sortable" jQuery172019945692622544986="151"> 
    <LI class="ui-state-default entity" jQuery172019945692622544986="75">some item 1</LI> 
    <LI class="ui-state-default entity" jQuery172019945692622544986="76">some item 2</LI> 
    <LI class="ui-state-default entity" jQuery172019945692622544986="77">some item 3</LI> 
    <LI class="ui-state-default entity" jQuery172019945692622544986="78">some item 4</LI> 
    <LI class="ui-state-default entity" jQuery172019945692622544986="79">some item 5</LI> 
    <LI class="ui-state-default entity" jQuery172019945692622544986="80">some item 6</LI> 
    <LI class="ui-state-default entity" jQuery172019945692622544986="81">some item 7</LI> 
    <LI class="ui-state-default entity" jQuery172019945692622544986="82">some item 8</LI> 
</UL> 
<UL class="targetItems droptrue ui-sortable" jQuery172024919617247411335="152"></UL> 

这里是一个“大屏幕”输出的截图:

On a large screen

这里是输出的与 “小屏幕” 的屏幕截图:

On a small screen

这里是的屏幕截图所期望的“小屏幕”上输出(调整了DOM使用IE开发工具来产生截图:

Desired result

我明白任何帮助,可有助于解决这个问题。

回答

1

你缺少长度前缀px/cm/in

@media screen and (max-width: 1024) { 
           ^^^^ // Missing px 

DEMO - (不工作)

它应该是:

@media screen and (max-width: 1024px) { 
            ^^ // Added px 

DEMO - (工作)

SEE REFERENCE

+0

我看到这是在您的示例中工作,但它不在我的应用程序中。我有一些问题:** 1。**如果定义一个规则(最大宽度),我还必须定义(最小宽度)?或者它处理一种默认样式,由自定义规则覆盖。 ** 2。**我将我的'@ media'规则放在一个css文件中。是否允许@media规则与古典css规则相同?或者我必须用我的'@ media'规则创建一个专用的css文件? ** 3。**我不确定宽度规则适用于哪个元素。它适用于屏幕尺寸还是元素尺寸? –

+0

好的,我想出了为什么这不起作用。我的应用程序输出一个使用IE 8引擎的IE 9渲染的'。而IE 8不支持媒体查询,所以我的查询被忽略。我会看看我是否可以在应用程序中更改它,但它不在这个问题的范围之内。无论如何,谢谢你的回答。它实际上是解决方案的一部分 –