Responsive alternative to Aviary for mobile

若如初见. 提交于 2019-12-24 05:32:08

问题


Since Aviary does not plan on having a responsive image editor in the near future (e.g., not great on mobile safari), does anyone know of alternatives?

This is where they say that responsive is not in the near future:

http://support.aviary.com/forums/191584-developer-feedback/suggestions/3718022-fully-responsive-web-editor-for-mobile-sites


回答1:


You can use the following css, to make the aviary editor popup responsive. This is the only solution:

@media all and (max-width: 640px) {
html {
    height: 100%;
}

body {
    min-height: 100%;
    position: relative;
}

.avpw_is_fullscreen #avpw_controls, #avpw_holder #avpw_controls, #avpw_holder .avpw_is_fullscreen #avpw_controls {
    position: absolute;
    left: 5px;
    right: 5px;
    min-width: 300px;

    -webkit-sizing: border-box;
    -moz-sizing: border-box;
    box-sizing: border-box;
}

#avpw_holder #avpw_tool_content_wrapper {
    position: relative;

    padding-bottom: 56px;

}

#avpw_holder #avpw_tool_main_container {
    position: relative;
}

#avpw_holder #avpw_tool_options_container {
    position: relative;
}

#avpw_holder #avpw_tool_container {
    left: 0;
    right: 0;
    min-width: 300px;
}

#avpw_holder .avpw_prev, #avpw_holder .avpw_next {

}

#avpw_holder .avpw_tool_pager .avpw_clip {
    right: 48px;
}

#avpw_holder .avpw_scroll_strip {
}

#avpw_holder .avpw_scroll_strip .avpw_scroll_page {
    /* max-width:200px; */
    /* width: 300px !important; */
}

#avpw_holder #avpw_rghtArrow {
    right: 0;
}

#avpw_holder #avpw_canvas_embed {
    -webkit-sizing: border-box;
    -moz-sizing: border-box;
    box-sizing: border-box;
    top: 188px;

}

#avpw_holder #avpw_zoom_container {
    width: auto;
    min-width: 42px;
    left: 5px;
    /* right: 5px; */
    background: rgba(51, 51, 51, 0.59);
}

#avpw_holder #avpw_canvas_element, #avpw_holder #avpw_canvas_element.avpw_position_by_transform {
    -webkit-sizing: border-box;
    -moz-sizing: border-box;
    box-sizing: border-box;
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    top: 0;
    width: 100% !important;

    -webkit-transform: none !important;
    -moz-transform: none !important;
    transform: none !important;

}

#avpw_holder .avpw_mode_action {
    position: relative;
    height: 55px;
    width: 100%;
    top: 100%;
    /* background: #303740; */
}

#avpw_holder .avpw_mode_action_left,
#avpw_holder .avpw_mode_action_left + .avpw_mode_action_right {
    width: 50%;
}

#avpw_holder .avpw_mode_action_left {
    float: left;
}

#avpw_holder .avpw_mode_action_right {
    float: right;
}

.avpw_mode_action_left:after, .avpw_mode_action_right:before, .avpw_tool_pager .avpw_scroll_rule {
    height: auto !important;

    top: 0 !important;
    bottom: 0 !important;
}

#avpw_holder .avpw_mode_action .avpw_button {
    /* position: relative; */

}

#avpw_holder .avpw_back_button {
    float: left;
}

}



回答2:


I really needed Aviary Web Widget on mobile. I tried CSS tweaking. It was a nightmare.

Then, I realized I could use CSS transform, scaling the photo editor to the viewport size.

It worked!

Here is the core of it:

function adjustSize()
{
  // condition to begin using scale is media query below

  if (!actual.mq('(max-width: 757px)'))
  {
      return $('body').css('transform', 'translate(0px, 0px) scale(1)');
  }

  // scale = actual width in pixels divided by 757 (minimum photo editor width)
  var scale = actual('width', 'px') / 757;

  // left side positioning
  var left = (376 * scale * scale) + (-376 * scale);

  return $('body').css('transform', 'translate(' + left + 'px, 0px) scale(' + scale + ')');
}

$(window).resize(adjustSize);

adjustSize();

I am using jQuery and actual. And also this CSS:

@media all and (max-width: 941px) {

.avpw_is_fullscreen #avpw_controls, #avpw_holder #avpw_controls {
  top: 5px;
  left: 5px;
  right: 5px;
  bottom: 5px;
}

}

With the CSS above, the maximum width where the Aviary photo editor fits is 757px.

So, in the JavaScript, we only trigger the scaling when the width is lower than 757px.

I am using "body" element, because the only thing in the "page" is the photo editor.

You can change and adapt the solution to your needs.

I can't believe it worked!




回答3:


Here's my CSS. Not super-pretty, but it is a start. Comments/suggestions welcome!

span.aviary-feather {
    background: #ff0000 none repeat scroll 0 0;
    color: #ffffff;
    font-size: 16px !important;
    height: auto !important;
    opacity: 1 !important;
    padding: 5px 40px !important;
    width: auto !important;
}
span.aviary-feather::after {
    content: "edit";
}
#avpw_zoom_container {
    display: none !important;
}
#avpw_powered_branding {
    display: none;
}

#avpw_controlpanel_crop, 
#avpw_controlpanel_orientation .avpw_inset_group:nth-child(3), #avpw_controlpanel_orientation .avpw_label:nth-child(6) {
    display: none !important;
}

.avpw_inner-center {
    right: 0 !important;
}
.avpw_tool_cutout_centered_drawing {
    padding-left: 65px;
    width: 100%;
}
.avpw_colorsplash_eraser {
    width: 45px !important;
}
.avpw_inset_color_widget,
#avpw_controlpanel_drawing .avpw_inset_button_label {
    display: none;
}




@media all and (max-width: 941px) {
#avpw_holder {
    left: 0;
    position: fixed;
    top: 150px;
    transform: translate(0px, 0px) scale(1);
    z-index: 1;
}
.avpw_is_fullscreen #avpw_controls, #avpw_holder #avpw_controls {
    bottom: 5px;
    min-height: 600px;
    right: 5px;
    top: 5px;
    transform: translate(0px, 0px) scale(1);
}
.avpw_main_close {
    left: 0 !important;
}
/*#avpw_tool_main_container, #avpw_tool_options_container {
    width: 300px !important;
}*/
.avpw_tool_pager .avpw_clip {
    left: 100px !important;
}
.avpw_mode_action_right {
    float: left !important;
    height: auto !important;
    position: relative !important;
}
.avpw_mode_action.avpw_mode_action_right .avpw_button {
    left: 0;
    top: 25px;
}
.avpw_mode_action.avpw_mode_action_left {
    left: -12px;
    top: 12px;
}

#avpw_canvas_element, #avpw_temp_loading_image, #avpw_canvas_overlay,
#avpw_canvas_controls_layer {
    /*transform-origin: 125px 0 0 !important;
    transform: translate(0px, 0px) scale(0.406667) !important;*/
    height: auto !important;
    left: 0 !important;
    top: 0 !important;
    /*transform: translate(50px, 86px) scale(1) !important;*/
    transform: translate(0, 86px) scale(1) !important;
    width: auto !important;
}



.avpw_canvas_spinner {
    left: 75px !important;
    top: 115px !important;
}

}


来源:https://stackoverflow.com/questions/24050954/responsive-alternative-to-aviary-for-mobile

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!