Polymer 1.0移动网络应用程序看起来不对

时间:2015-10-19 04:03:11

标签: javascript css mobile polymer

您好我在使用cakephp的铁列表演示中有这个工作示例:

<?php
use Cake\Routing\Router;
?>
<!doctype html>
<html>
<head>

    <title>iron-list and paper-scroll-header-panel demo</title>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
    <meta name="mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-capable" content="yes">

    <?php echo $this->Html->script('/bower_components/webcomponentsjs/webcomponents-lite.min.js'); ?>

    <link rel="import" href="<?= Router::url('/'); ?>bower_components/polymer/polymer.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/iron-flex-layout/iron-flex-layout.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/paper-toolbar/paper-toolbar.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/paper-scroll-header-panel/paper-scroll-header-panel.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/paper-icon-button/paper-icon-button.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/iron-ajax/iron-ajax.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/iron-icons/iron-icons.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/iron-list/iron-list.html">

<style is="custom-style">

    paper-scroll-header-panel {
    @apply(--layout-fit);
    @apply(--layout-vertical);
    @apply(--paper-font-common-base);
    }

    paper-toolbar.tall .title {
        font-size: 40px;
        margin-left: 60px;

        -webkit-transform-origin: left center;
        transform-origin: left center;
        overflow: visible;
    }

    paper-toolbar paper-icon-button {
        --paper-icon-button-ink-color: white;
    }

    iron-list {
        background-color: var(--paper-grey-200, #eee);
        padding-bottom: 16px;
    }

    .item {
    @apply(--layout-horizontal);

        margin: 16px 16px 0 16px;
        padding: 20px;
        border-radius: 8px;
        background-color: white;
        border: 1px solid #ddd;
    }

    .item:focus {
        outline: 0;
        border-color: #666;
    }

    .avatar {
        height: 40px;
        width: 40px;
        border-radius: 20px;
        box-sizing: border-box;
        background-color: #DDD;
    }

    .pad {
        padding: 0 16px;
    @apply(--layout-flex);
    @apply(--layout-vertical);
    }

    .primary {
        font-size: 16px;
        font-weight: bold;
    }

    .secondary {
        font-size: 14px;
    }

    .dim {
        color: gray;
    }

</style>

</head>
<body unresolved>

<template is="dom-bind">
    <iron-ajax url="<?= $this->Url->build(["controller" => "Users","action" => "test.json"]); ?>" last-response="{{data}}" auto></iron-ajax>

    <paper-scroll-header-panel class="fit" condenses keep-condensed-header>
        <paper-toolbar>
            <paper-icon-button icon="arrow-back" alt="Back"></paper-icon-button>
            <div class="flex"></div>
            <paper-icon-button icon="search" alt="Search"></paper-icon-button>
            <paper-icon-button icon="more-vert" alt="More options"></paper-icon-button>
            <div class="bottom title">iron-list</div>
        </paper-toolbar>
        <iron-list items="[[data.user]]" as="item">
            <template>
                <div>
                    <div class="item" tabindex="0">
                        <img class="avatar" src="[[item.image]]">
                        <div class="pad">
                            <div class="primary">[[item.email]]</div>
                            <div class="secondary">[[item.phone]]</div>
                            <div class="secondary dim">[[item.token]]</div>
                        </div>
                        <iron-icon icon$="[[iconForItem(item)]]"></iron-icon>
                    </div>
                </div>
            </template>
        </iron-list>
    </paper-scroll-header-panel>
</template>

<script>

    document.querySelector('template[is=dom-bind]').iconForItem = function(item) {
         return item ? (item.integer < 50 ? 'star-border' : 'star') : '';
    };

</script>
</body>
</html>

这是演示中的相同示例,如果是铁列表,我只是改变了一些基本的东西,使其与我的cakephp架构一起工作。

现在我希望在自定义Polymer元素中包含所有这些内容。所以我这样做了:

<dom-module id="proto-element">
    <template>

    <style is="custom-style">

        paper-scroll-header-panel {
        @apply(--layout-fit);
        @apply(--layout-vertical);
        @apply(--paper-font-common-base);
        }

        paper-toolbar.tall .title {
            font-size: 40px;
            margin-left: 60px;

            -webkit-transform-origin: left center;
            transform-origin: left center;
            overflow: visible;
        }

        paper-toolbar paper-icon-button {
            --paper-icon-button-ink-color: white;
        }

        iron-list {
            background-color: var(--paper-grey-200, #eee);
            padding-bottom: 16px;
        }

        .item {
        @apply(--layout-horizontal);

            margin: 16px 16px 0 16px;
            padding: 20px;
            border-radius: 8px;
            background-color: white;
            border: 1px solid #ddd;
        }

        .item:focus {
            outline: 0;
            border-color: #666;
        }

        .avatar {
            height: 40px;
            width: 40px;
            border-radius: 20px;
            box-sizing: border-box;
            background-color: #DDD;
        }

        .pad {
            padding: 0 16px;
        @apply(--layout-flex);
        @apply(--layout-vertical);
        }

        .primary {
            font-size: 16px;
            font-weight: bold;
        }

        .secondary {
            font-size: 14px;
        }

        .dim {
            color: gray;
        }

    </style>
    <iron-ajax url="<?= $this->Url->build(["controller" => "Users","action" => "test.json"]); ?>" last-response="{{data}}" auto></iron-ajax>

    <paper-scroll-header-panel class="fit" condenses keep-condensed-header>
        <paper-toolbar>
            <paper-icon-button icon="arrow-back" alt="Back"></paper-icon-button>
            <div class="flex"></div>
            <paper-icon-button icon="search" alt="Search"></paper-icon-button>
            <paper-icon-button icon="more-vert" alt="More options"></paper-icon-button>
            <div class="bottom title">iron-list</div>
        </paper-toolbar>
        <iron-list items="[[data.user]]" as="item">
            <template>
                <div>
                    <div class="item" tabindex="0">
                        <img class="avatar" src="[[item.image]]">
                        <div class="pad">
                            <div class="primary">[[item.email]]</div>
                            <div class="secondary">[[item.phone]]</div>
                            <div class="secondary dim">[[item.token]]</div>
                        </div>
                        <iron-icon icon$="[[iconForItem(item)]]"></iron-icon>
                    </div>
                </div>
            </template>
        </iron-list>
    </paper-scroll-header-panel>
    </template>
    <script>
        // register a new element called proto-element
        Polymer({
            is: "proto-element",
            iconForItem: function (item) {
                return item ? (item.integer < 50 ? 'star-border' : 'star') : '';
            }
        });
    </script>
</dom-module>

然后在我的html文件中,我导入了所需的聚合物元素/文件,并使用了这样的元素:

<?php
use Cake\Routing\Router;
?>
<!DOCTYPE html>
<html>
<head>

    <?php echo $this->Html->script('/bower_components/webcomponentsjs/webcomponents-lite.min.js'); ?>

    <link rel="import" href="<?= Router::url('/'); ?>bower_components/polymer/polymer.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/iron-flex-layout/iron-flex-layout.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/paper-toolbar/paper-toolbar.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/paper-scroll-header-panel/paper-scroll-header-panel.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/paper-icon-button/paper-icon-button.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/iron-ajax/iron-ajax.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/iron-icons/iron-icons.html">
    <link rel="import" href="<?= Router::url('/'); ?>bower_components/iron-list/iron-list.html">

    <?=  $this->element('Polymer/proto-element');?>


</head>

<body unresolved>
    <proto-element></proto-element>
</body>

</html>

当我在笔记本电脑中查看结果时,结果完全相同。但是当我从手机打开页面时问题出现了。第一个选项按预期很好地呈现:

Capture from phone

但是第二个选项(当我将列表包含在自定义元素中时)显示缩小的列表,一切都很小并且不可用:

Capture from phone not usable

我做错了吗?如何在我的自定义Polymer元素中使用这个铁列表示例?

谢谢

1 个答案:

答案 0 :(得分:1)

我发现了问题。这么简单......

您需要添加元标记!

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">